我环顾四周,似乎遇到了 SQL Server 2008 R2 的一个奇怪问题。
我知道使用 CONCAT_NULL_YIELDS_NULL = ON 意味着以下内容将始终解析为 NULL
SELECT NULL + 'My String'
我对此很满意,但是当将它与 COALESCE() 结合使用时,它似乎不适用于我的数据库。
考虑以下查询,其中 MyString 是 VARCHAR(2000)
SELECT COALESCE(MyString + ', ', '') FROM MyTableOfValues
现在在我的查询中,当 MyString IS NULL 时,它返回一个空(NOT NULL)字符串。我可以在查询结果窗口中看到这一点。
然而非常不寻常的是,当它与 INSERT 一起运行时,它无法识别 CONCAT_NULL_YIELDS_NULL 而是插入一个空白 ', '。
查询如下插入。
CONCAT_NULL_YIELDS_NULL ON
INSERT INTO Mytable(StringValue)
SELECT COALESCE(MyString + ', ', '')
FROM MyTableOfValues
除此之外,我还检查了数据库和 CONCAT_NULL_YIELDS_NULL = TRUE...</p>