【问题标题】:Return blank instead of 0 in sql case when statementsql case when语句返回空白而不是0
【发布时间】:2022-01-17 09:46:20
【问题描述】:

在 SQL 视图设计中,我想添加带有CASE WHEN 语句的列:

SELECT  
      [A]
      ,[B]
      ,[C]
      ,[VALUE]
      ,[D]
      ,[E]
      ,CASE WHEN [VALUE] > 0 THEN [VALUE] ELSE '' END AS VALUE1
      ,[DATE]
  
  FROM [MY_DATABASE].[dbo].[MY_VIEW]

但是,这将返回 0 而不是空白。 '' 的空白怎么办?

我已经尝试 Cast() 按照this answer 中的建议将 0 转换为 varchar(10),但似乎无法正常工作。任何帮助表示赞赏。

【问题讨论】:

  • VALUE 的类型是什么?
  • 数据库是什么?

标签: sql null case


【解决方案1】:

它返回零,因为 CASE 的第一个 THEN 表达式是一个数字 (VALUE),并且编译器将第二个表达式 (ELSE '') 也转换为一个数字,以使所有 CASE 分支的结果兼容。

您可以尝试同时返回字符串(THEN 和 ELSE 部分),而不是:

, CASE WHEN [VALUE]>0 THEN CAST(VALUE as varchar(50)) ELSE '' END as VALUE1

但是,我无法判断这是否适合您,因为 VALUE 可能包含小数/指数部分,并且简单地转换为 varchar(50) 可能无法以您想要的方式显示它们。如果是这种情况,那么您可以尝试 FORMAT 函数(如果您使用的是 SQL Server),而不是 CAST(FORMAT 也应该返回 VARCHAR)

【讨论】:

    猜你喜欢
    • 2020-10-14
    • 2016-07-08
    • 1970-01-01
    • 2013-10-13
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多