将数据库中的街道从STR更新为STREET

时间:2013-04-11 09:16:38

标签: sql sql-server

我有一个包含某个城市所有街道的数据库。但名称在末尾缩写,例如:Highwaystr而不是Highwaystreet。

我希望所有这些街道同时更新。

我试过了:

UPDATE bestrating SET STRAATNAAM = '%STREET' WHERE STRAATNAAM LIKE '%STR'

但这是用“%Street”替换所有街道名称。

2 个答案:

答案 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使用的通配符语法唯一适用的地方是LIKEPATINDEX(可能还有一些FTS谓词 - 我不使用它)。 SET的{​​{1}}子句不支持它,并且SQL Server没有对例如UPDATE的直接支持。正则表达式。


上述工作规定,搜索的文本是替换文本的前缀。如果不是这样,你会做类似的事情:

UPDATE bestrating
SET STRAATNAAM = SUBSTRING(STRAATNAAM,1,LEN(STRAATNAAM)-LEN('STR')) +'STREET'
WHERE STRAATNAAM LIKE '%STR'

即。通过搜索文本的长度减少字符串的长度,然后应用整个替换字符串。