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