sql-server - MS SQL 服务器 : display blank for a zero-valued or NULL-valued integer field

标签 sql-server tsql

我可以使用这个:

select COALESCE(my_integer_field, '') from my_table 

显示 NULL 值的零。如何不使用存储过程而不显示 NULL 或零值的任何内容(无零)?

最佳答案

看起来像是表示层而不是 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;

或使用 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 ║
╚══════════════════╩════════╝

关于sql-server - MS SQL 服务器 : display blank for a zero-valued or NULL-valued integer field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36726842/

相关文章:

sql-server - SQL Server - 查找一周的第一天

sql-server - MS SQL Server 使用 select 插入表,同时输出到第三个表

sql - 如何从另一个表中获取引用值?

sql - 如何选择处于时间戳之间状态的记录?数据库

sql - Float 在数据库 Sql Server 中存储为 Real

sql - Microsoft Server studio 'script table as' 用于插入错误语法

查询完成时SQL Server通知?

php - 将一个 SQL 表中的行链接到不同表中的多行,

c# - 我正在尝试使用 "Not IN"将 SQL 查询转换为 Linq to Entities

sql - 在 SQL Server 中将星期一的数据与之前星期一的数据进行比较