我想将某些varchar替换为NULL。我直接使用了
SELECT REPLACE('abc', '1', NULL)
即。对于每个输入varchar,如果至少有一个' 1'我希望整个输入变为NULL(例如' 123'为NULL,' abc-1'为NULL等)
即使没有匹配(例如不需要替换),我甚至会烦恼,它仍然给我NULL。例如,运行上面的语句会给你NULL。
为什么呢?任何解决方法?
选择"为什么"组件和一个很好的简单解决方法。
答案 0 :(得分:5)
根据REPLACE
文档:
如果任何一个参数为NULL,则返回NULL。
根据以上所述,此查询将为所有列返回NULL
:
SELECT
REPLACE(NULL, 'abc', 'a'),
REPLACE('abc', NULL, 'a'),
REPLACE('abc', 'a', NULL)
如果您想为包含NULL
的每个输入返回'1'
,请使用CASE
表达式:
SELECT
CASE
WHEN 'abc' LIKE '%1%' THEN NULL
ELSE 'abc'
END