为什么不会SSMS
为我处理这个脚本?
DECLARE @containsReturn AS CHAR(500) =
'[email protected] /cdn-cgi/l/email-protection;
[email protected] /cdn-cgi/l/email-protection;'
CREATE TABLE #x(ProblemColumn CHAR(500));
INSERT INTO #x VALUES(@containsReturn);
SELECT * FROM #X;
UPDATE #x
SET ProblemColumn = REPLACE(ProblemColumn, char(13), '')
WHERE CONTAINS(ProblemColumn, CHAR(13))
我得到这个错误,专注于最后的CHAR(13)
in the UPDATE
's WHERE
clause:
消息 102,第 15 级,状态 1,第 14 行
“CHAR”附近的语法不正确。
因为 SQLCONTAINS http://msdn.microsoft.com/en-us/library/ms187787.aspx方法需要一个NVARCHAR
作为第二个参数,它不能隐式转换CHAR(13)
所以你需要将它声明为一个变量,它可以是:
DECLARE @srch NVARCHAR(1) = CHAR(13)
UPDATE #x
SET ProblemColumn = REPLACE(ProblemColumn, char(13), '')
WHERE CONTAINS(ProblemColumn, @srch)
顺便说一句,当你这样做时,你会得到另一个错误:
消息 7601,16 级,状态 2,第 15 行
无法对表或索引视图“#x”使用 CONTAINS 或 FREETEXT 谓词,因为它不是全文索引。
如果您的真实表不是临时表,并且确实是全文索引的,那就没问题。否则你可以做一些更简单的事情:
UPDATE #x
SET ProblemColumn = REPLACE(ProblemColumn, char(13), '')
WHERE ProblemColumn LIKE '%' + CHAR(13) + '%'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)