为什么这个语句返回0而不是空字符串?我实际上正在使用一个视图,其中包含硬编码列的select语句返回NULL。当我试图检查它是否为NULL时,它实际上返回0.
SELECT ISNULL((SELECT NULL as Col), '')
任何建议或帮助都将不胜感激......
答案 0 :(得分:7)
NULL
没有明确的类型,但在普通SELECT NULL
中,它会以int
类型返回。当您的表达式涉及int
和char(N)
,int
获胜时,char(N)
值会转换为int
,而不是相反。为了让事情更加混乱,''
恰好可以转换为int
而没有任何问题,转化的结果是0
。
SELECT ISNULL((SELECT CAST(NULL AS char(1)) AS col), '')
应该返回一个空字符串。