我有一个包含某个城市所有街道的数据库。但名称在末尾缩写,例如:Highwaystr而不是Highwaystreet。
我希望所有这些街道同时更新。
我试过了:
UPDATE bestrating SET STRAATNAAM = '%STREET' WHERE STRAATNAAM LIKE '%STR'
但这是用“%Street”替换所有街道名称。
答案 0 :(得分:3)
使用REPLACE
UPDATE bestrating
SET STRAATNAAM = REPLACE(STRAATNAAM, ' STR', ' STREET')
WHERE STRAATNAAM LIKE '% STR'
答案 1 :(得分:1)
如果它只是在最后更改文本,那么更简单的是:
UPDATE bestrating SET STRAATNAAM = STRAATNAAM +'EET' WHERE STRAATNAAM LIKE '%STR'
LIKE
使用的通配符语法唯一适用的地方是LIKE
和PATINDEX
(可能还有一些FTS谓词 - 我不使用它)。 SET
的{{1}}子句不支持它,并且SQL Server没有对例如UPDATE
的直接支持。正则表达式。
上述工作规定,搜索的文本是替换文本的前缀。如果不是这样,你会做类似的事情:
UPDATE bestrating
SET STRAATNAAM = SUBSTRING(STRAATNAAM,1,LEN(STRAATNAAM)-LEN('STR')) +'STREET'
WHERE STRAATNAAM LIKE '%STR'
即。通过搜索文本的长度减少字符串的长度,然后应用整个替换字符串。