我最近遇到了这种行为,虽然我可以解决它,但我很好奇它为什么会发生。似乎没有太多文件解释为什么会发生这种情况。
考虑以下两个片段:
SELECT REPLACE('hello world', 'world', NULL)
SELECT REPLACE('hello world', 'foobar', NULL)
这两个示例都返回NULL。
我也不是真的了解,但是第一个我可以看到如果确实有一些警告,我不知道NULL,这将导致我们看到的结果。
但是第二个例子我完全被难倒了。即使有一些奇怪的NULL替换行为,为什么我的字符串被操纵呢?在目标字符串中找不到替换字符串。
答案 0 :(得分:2)
阅读本文:
https://docs.microsoft.com/en-us/sql/t-sql/functions/replace-transact-sql
它声明:
如果任何一个参数为NULL,则返回NULL。
答案 1 :(得分:0)
这肯定是SQL Server中混乱的NULL handlich的结果。使用NULL执行的所有操作都将导致NULL。尝试SELECT 1 + NULL或'abc'+ NULL。无论如何,因为你正在处理一个字符串,你应该使用空字符串''而不是NULL。