在SQL Server 2008 R2上运行此查询
update Documents
set Url = STUFF(Url, CHARINDEX('2', Url), 1, '1')
where url != '' and Url is not null
给出错误
Msg 515, Level 16, State 2, Line 1
Cannot insert the value NULL into column 'Url', table 'dbo.Documents'; column does not allow nulls. UPDATE fails. The statement has been terminated.
请注意,选择正常
SELECT STUFF(url, CHARINDEX('2', Url), 1, '1')
FROM Documents
where url != ''
答案 0 :(得分:0)
来自CHARINDEX
的文档:
如果在 expressionToSearch 中找不到 expressionToFind ,则
CHARINDEX
将返回0.
来自STUFF
的文档:
如果起始位置为0,则返回空值
也许你想添加:
Url like '%2%'
作为WHERE
子句中的附加条件 1 。
E.g。看看这个例子:
;With Example as (
select 'abc' as Url
)
select Url, CHARINDEX('2',Url),STUFF(Url, CHARINDEX('2', Url), 1, '1')
from Example
产生结果:
Url
---- ----------- -------
abc 0 NULL
1 实际上,它可以单独作为此UPDATE
的条件,因为它将作为副产品消除Url
NULL
或空的。但您可能更愿意保留其他条件,以明确表示您想要排除这些特定值。