Return 空白而不是 sql case when 语句中的 0

Return blank instead of 0 in sql case when statement

在 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]

不过,这个returns 0 而不是空白。如何让 '' 为空?

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

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

您可以尝试 return 为两者(THEN 和 ELSE 部分)输入字符串,而不是:

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

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