我能用这个:
select COALESCE(my_integer_field, '') from my_table
Run Code Online (Sandbox Code Playgroud)
显示NULL值的零.NULL如果不诉诸存储过程,我怎么能不显示任何(零没有)或零值?
Luk*_*zda 10
它看起来像表示层而不是DB的工作.
无论如何你可以使用:
SELECT CASE WHEN my_integer_field = 0 OR my_integer_field IS NULL THEN ''
ELSE CAST(my_integer_field AS VARCHAR(10))
END
FROM my_table;
Run Code Online (Sandbox Code Playgroud)
或使用IIF(SQL Server 2012+):
SELECT IIF(my_integer_field = 0 OR my_integer_field IS NULL,
'',
CAST(my_integer_field AS VARCHAR(10)))
FROM my_table;
Run Code Online (Sandbox Code Playgroud)
请记住blank(空字符串'')会将数据类型更改INT为string.
甚至更短:
SELECT *,COALESCE(NULLIF(CAST(my_integer_field AS VARCHAR(10)) ,'0'), '') AS result
FROM my_table;
Run Code Online (Sandbox Code Playgroud)
输出:
?????????????????????????????
? my_integer_field ? result ?
?????????????????????????????
? NULL ? ?
? 0 ? ?
? 1 ? 1 ?
? 2 ? 2 ?
?????????????????????????????
Run Code Online (Sandbox Code Playgroud)