【发布时间】:2014-05-30 10:49:29
【问题描述】:
我希望以下 SQL statement 返回 b。
你能指出我做错了什么吗?
SELECT CASE WHEN ISNULL(0,'')='' THEN 'a' ELSE 'b' END
【问题讨论】:
标签: sql-server tsql case coalesce isnull
我希望以下 SQL statement 返回 b。
你能指出我做错了什么吗?
SELECT CASE WHEN ISNULL(0,'')='' THEN 'a' ELSE 'b' END
【问题讨论】:
标签: sql-server tsql case coalesce isnull
它来自数据类型的转换。您将整数与字符进行比较
如果你运行
SELECT CASE WHEN ISNULL(CAST(0 AS VARCHAR(255)),'') = '' THEN 'a' ELSE 'b' END
你会得到b
否则 '' 将被转换为 0 的整数,从而使比较 0 = 0 为真,因此返回 'a'。
【讨论】:
SELECT ISNULL(0, '')
上面的查询返回值0,所以结果是'a'
将查询改为下面,你会得到'b'
SELECT CASE WHEN ISNULL('0','')='' THEN 'a' ELSE 'b' END
【讨论】: