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