【问题标题】:CASE Statement with ISNULL(0,'')带有 ISNULL(0,'') 的 CASE 语句
【发布时间】: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


    【解决方案1】:

    它来自数据类型的转换。您将整数与字符进行比较

    如果你运行

    SELECT CASE WHEN ISNULL(CAST(0 AS VARCHAR(255)),'') = '' THEN 'a' ELSE 'b' END
    

    你会得到b
    否则 '' 将被转换为 0 的整数,从而使比较 0 = 0 为真,因此返回 'a'。

    【讨论】:

    【解决方案2】:

    SELECT ISNULL(0, '')

    上面的查询返回值0,所以结果是'a'

    将查询改为下面,你会得到'b'

    SELECT CASE WHEN ISNULL('0','')='' THEN 'a' ELSE 'b' END

    【讨论】:

      猜你喜欢
      • 2017-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-10
      • 2017-10-23
      • 1970-01-01
      • 2014-07-09
      相关资源
      最近更新 更多