use*_*188 0 sql t-sql sql-server sql-server-2008-r2 sql-server-2012
我想将某些varchar替换为NULL.我直接用过
SELECT REPLACE('abc', '1', NULL)
Run Code Online (Sandbox Code Playgroud)
即对于每个输入varchar,如果I内至少有一个'1',则整个输入变为NULL(例如'123'为NULL,'abc-1'为NULL等)
甚至在没有匹配的情况下(例如不需要替换),我的烦恼是什么,它仍然给我NULL.例如,运行上面的语句会给你NULL.
为什么?任何解决方法?
使用"why"组件和一个简单的解决方法来挑选答案.
根据REPLACE
文件:
如果任何一个参数为NULL,则返回NULL.
根据以上所述,此查询将返回NULL
所有列:
SELECT
REPLACE(NULL, 'abc', 'a'),
REPLACE('abc', NULL, 'a'),
REPLACE('abc', 'a', NULL)
Run Code Online (Sandbox Code Playgroud)
如果要为NULL
包含该输入的每个输入返回'1'
,请使用CASE
表达式:
SELECT
CASE
WHEN 'abc' LIKE '%1%' THEN NULL
ELSE 'abc'
END
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
146 次 |
最近记录: |