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

时间:2015-10-16 08:16:09

标签: sql sql-server

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

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

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

snapshot

1 个答案:

答案 0 :(得分:7)

NULL没有明确的类型,但在普通SELECT NULL中,它会以int类型返回。当您的表达式涉及intchar(N)int获胜时,char(N)值会转换为int,而不是相反。为了让事情更加混乱,''恰好可以转换为int而没有任何问题,转化的结果是0

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