【问题标题】:SQL Server NULL Integer to Empty String using ISNULL使用 ISNULL 将 SQL Server NULL 整数转换为空字符串
【发布时间】:2014-08-19 21:23:27
【问题描述】:

我的好奇心总是占了上风,我在网上搜索了对此的解释,但一无所获(可能是因为我没有使用正确的术语。)

谁能解释一下为什么 SQL Server 在执行以下语句时返回零 (0) 值,而不是空字符串 ('')。

    DECLARE @I AS INT
    SET @I = NULL
    SELECT ISNULL(@I, '') -- 0

【问题讨论】:

  • SQL Server 将 '' 隐式转换为整数,即 0(零)。

标签: sql sql-server tsql string isnull


【解决方案1】:

正如here 声明的那样,ISNULL 的第二个参数是替换值,它“必须是可隐式转换为 check_expresssion 类型的类型”。将'' 隐式转换为INT 结果为0。

【讨论】:

  • 呃,值 '' 可以隐式转换。它转换为 0。 select cast('' as INT) -- 返回 0
  • 谢谢.. 看起来答案就在我的眼皮底下。
【解决方案2】:

因为@I 被声明为INT,所以空字符串被隐式转换为整数,结果为零。

【讨论】:

【解决方案3】:

我知道这是一个老问题,但我想分享一下。 这里的问题不是因为 ' ' 表达式的转换,而是因为 int 数据类型是 not null-able 并且当您尝试 SET @I = NULL SQL设置默认值零(0)。 这就是为什么 ISNULL(@I, '') 语句在 @I 中找不到任何 null 并返回其值 (0) 的原因。

希望它对那里的人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-01
    • 2017-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多