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

问题描述 投票:1回答:2

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

请考虑以下两个片段:

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

这两个示例都返回NULL。

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

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

sql sql-server tsql
2个回答
2
投票

读这个:

https://docs.microsoft.com/en-us/sql/t-sql/functions/replace-transact-sql

它指出:

如果任何一个参数为NULL,则返回NULL。


0
投票

这肯定是SQL Server中混乱的NULL handlich的结果。使用NULL执行的所有操作都将导致NULL。尝试SELECT 1 + NULL或'abc'+ NULL。无论如何,因为你正在使用一个字符串,你应该使用空字符串''而不是NULL。

© www.soinside.com 2019 - 2024. All rights reserved.