在SQL Server中,我正在清理字符串以删除街道名称中的缩写:
-- Replace cl, cl., cl , with Close
SELECT @CleanedAddress = REPLACE(@CleanedAddress, 'cl', ' Close')
WHERE @CleanedAddress LIKE '% cl'
SELECT @CleanedAddress = REPLACE(@CleanedAddress, ' cl.', ' Close')
WHERE @CleanedAddress LIKE '% cl.'
SELECT @CleanedAddress = REPLACE(@CleanedAddress, ' cl ', ' Close ')
WHERE @CleanedAddress LIKE '% cl %'
SELECT @CleanedAddress = REPLACE(@CleanedAddress, ' cl. ', ' Close ')
WHERE @CleanedAddress LIKE '% cl. %'
给出一个示例街道名称12 Closet Close写为12 Closet Cl
我可以使用以下内容成功匹配:
SELECT @CleanedAddress = REPLACE(@CleanedAddress, 'cl', ' Close')
WHERE @CleanedAddress LIKE '% cl'
但是,替换会更改所有出现的'cl',从而导致12 Closeoset Close
如何用“关闭”替换结尾的“Cl”而不是所有出现的“CL”,并将其应用于使用可能以“CL”结尾的数千个字符串?
答案 0 :(得分:2)
你可以试试一个正确的字符串,我已经专门去了右边3,这样你就可以寻找一个空格,然后是cl - 这可以防止它在任何道路名称上结束' cl& #39 ;.
SELECT @CleanedAddress = LEFT(@CleanedAddress, len(@CleanedAddress) -3) + ' Close'
WHERE Right(@CleanedAddress,3) = ' cl'
您已经在寻找'%cl的其他情况。 %'会像它们一样工作,只是第一个更有可能提供错误匹配的
答案 1 :(得分:0)
你可以做一些更通用的事情:
[334.0, 223.0, 41.0, 819.0]