0

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

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

我试过这个:

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

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

4

2 回答 2

3

采用REPLACE

UPDATE bestrating 
SET STRAATNAAM = REPLACE(STRAATNAAM, ' STR', ' STREET') 
WHERE STRAATNAAM LIKE '% STR'
于 2013-04-11T09:17:51.440 回答
1

如果只是在最后更改文本,那么更简单的是:

UPDATE bestrating SET STRAATNAAM = STRAATNAAM +'EET' WHERE STRAATNAAM LIKE '%STR'

使用的通配符语法唯一适用的地方LIKELIKEand PATINDEX(可能还有一些 FTS 谓词 - 我不使用它)。SET它在 an 的子句中不受支持UPDATE,并且 SQL Server 不直接支持例如正则表达式。


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

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

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

于 2013-04-11T09:21:15.470 回答