我想匹配一个确切的单词并将其替换为另一个单词。
这是我正在使用的 SQL Server 查询:
UPDATE BODYCONTENT
SET BODY = CAST(REPLACE(CAST(BODY AS NVARCHAR(MAX)), 'Test' , 'prod') AS NTEXT)
WHERE BODY COLLATE Latin1_General_CI_AS LIKE '%Test%' COLLATE Latin1_General_CI_AS;
这个查询正在做什么:
'Test','test','TEST' 更新为 'prod'——这是预期的。
'Test2'、'TestTest'、'Fastest' 已更新为 'prod' - 我想避免这种行为。
请帮忙。
我尝试过但没有成功的其他查询:
UPDATE BODYCONTENT
SET BODY = CAST(REPLACE(CAST(BODY AS NVARCHAR(MAX)), 'Test' , 'prod') AS NTEXT)
WHERE BODY COLLATE Latin1_General_CI_AS LIKE '%[^A-Za-z0-9]Test[^A-Za-z0-9]%' COLLATE Latin1_General_CI_AS;
当我使用以下查询选择“测试”时:
SELECT *
FROM dbo.BODYCONTENT
WHERE CONVERT(NVARCHAR(MAX), BODY) = N'Test';
它没有返回任何东西。但我可以使用以下查询获得结果:
SELECT BODY
FROM dbo.BODYCONTENT
WHERE BODY LIKE '%Test%';
SELECT BODY
FROM dbo.BODYCONTENT
WHERE BODY COLLATE Latin1_General_CI_AS like '%TEST%' COLLATE Latin1_General_CI_AS;
这是列值:
Test testtest Test1 Test TEST
预期结果:
prod testtest Test1 prod prod
当前结果:
prod prodprod prod1 prod prod