SQL Server NULL使用ISNULL清空字符串的整数

时间:2014-08-19 21:23:27

标签: sql sql-server tsql string isnull

我的好奇心始终是我最好的,我在网上搜索了对此的解释并且没有任何结果(可能是因为我没有使用正确的条款。)

有人可以解释为什么SQL Server在执行以下操作时返回值为零(0),而不是空字符串('')。

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

3 个答案:

答案 0 :(得分:2)

因为@I被声明为INT,所以空字符串隐式地CAST为整数,从而产生零。

答案 1 :(得分:2)

如声明hereISNULL的第二个参数是replacement_value,“必须是一个可以隐式转换为check_expresssion类型的类型”。将''隐式转换为INT会导致0。

答案 2 :(得分:0)

我知道这是一个老问题,但我想分享。 这里的问题不是因为' '表达式的强制转换,不是因为 int 数据类型是不能为空,并且当您尝试{{ 1}} SQL设置默认值零(0)。 这就是为什么语句SET @I = NULLISNULL(@I, '')中找不到任何空值并返回其值(0)的原因。

希望它可以帮助某个人。