MS SQL服务器:显示零值或NULL值整数字段的空白

cur*_*us1 3 t-sql sql-server

我能用这个:

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)

LiveDemo

请记住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)

LiveDemo2

输出:

?????????????????????????????
? my_integer_field ? result ?
?????????????????????????????
? NULL             ?        ?
? 0                ?        ?
? 1                ?      1 ?
? 2                ?      2 ?
?????????????????????????????
Run Code Online (Sandbox Code Playgroud)