SQL:使用NULL替换调用REPLACE()

时间:2018-03-05 11:25:23

标签: sql sql-server tsql

我最近遇到了这种行为,虽然我可以解决它,但我很好奇它为什么会发生。似乎没有太多文件解释为什么会发生这种情况。

考虑以下两个片段:

SELECT REPLACE('hello world', 'world', NULL)    
SELECT REPLACE('hello world', 'foobar', NULL)

这两个示例都返回NULL。

我也不是真的了解,但是第一个我可以看到如果确实有一些警告,我不知道NULL,这将导致我们看到的结果。

但是第二个例子我完全被难倒了。即使有一些奇怪的NULL替换行为,为什么我的字符串被操纵呢?在目标字符串中找不到替换字符串。

2 个答案:

答案 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。