我可以使用它:
select COALESCE(my_integer_field, '') from my_table
显示NULL
值的零。如何在不诉诸存储过程的情况下,不显示NULL
或零值的任何内容(无零)?
答案 0 :(得分:8)
它看起来像表示层而不是数据库。
无论如何你可以使用:
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;
或使用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;
的 LiveDemo
强>
请注意,blank
(空字符串''
)会将INT
的数据类型更改为字符串。
甚至更短:
SELECT *,COALESCE(NULLIF(CAST(my_integer_field AS VARCHAR(10)) ,'0'), '') AS result
FROM my_table;
的 LiveDemo2
强>
输出:
╔══════════════════╦════════╗
║ my_integer_field ║ result ║
╠══════════════════╬════════╣
║ NULL ║ ║
║ 0 ║ ║
║ 1 ║ 1 ║
║ 2 ║ 2 ║
╚══════════════════╩════════╝