sql - 对于具有 NULL 值的硬编码列,ISNULL 返回 0

标签 sql sql-server

为什么这个语句返回 0 而不是空字符串?我实际上正在使用一个 View ,其中包含硬编码列的 select 语句返回 NULL。当我试图检查它是否为 NULL 时,它实际上返回 0。

SELECT ISNULL((SELECT NULL as Col), '')

任何建议或帮助将不胜感激......

snapshot

最佳答案

NULL 没有明确的类型,但在普通的 SELECT NULL 中,它会以 int 类型返回。当表达式涉及 intchar(N) 时,int 获胜,char(N) > value 被转换为 int,而不是相反。更让人困惑的是,'' 恰好可以毫无问题地转换为 int,并且转换的结果是 0

SELECT ISNULL((SELECT CAST(NULL AS char(1)) AS col), '') 应返回空字符串。

关于sql - 对于具有 NULL 值的硬编码列,ISNULL 返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33165587/

相关文章:

sql - 哪个更好 - Cursor For Loop 或 Loop over PLSQL 集合由 Bulk Collect 填充?

sql - Where 子句仅使用日期来过滤时间戳数据

sql - 如何将列变成行

SQL 而不是触发器有时不触发?

java - SQL 服务器索引

sql-server - 如何使用带有 T-SQL 和 OLE 自动化过程的 HTTP POST 发送参数

php - 如果 PDO INSERT 查询中的值为空,则如何避免错误?

sql - 雪花: ListAgg data based on condition

javascript - Android phonegap 应用程序在三星 Galaxy 设备上存在 SQlite 和本地存储问题

php - Laravel SQL 问题 SQLSTATE[HY000] [1045] 访问被拒绝