SQL 服务器仅替换字符串中的缩写
SQL Server replacing only abbreviation within a string
在 SQL 服务器中,我正在清理字符串以删除街道名称中的缩写:
-- 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" 替换为 "Close" 而不是所有出现的 "CL" 并将其应用于可能以 "CL" 结尾的数千个字符串?
您可以尝试改用 RIGHT 字符串,我特别选择了右 3,这样您就可以查找 space 后跟 cl - 这样可以防止它在任何以 [ 结尾的道路名称上出现=15=]。
SELECT @CleanedAddress = LEFT(@CleanedAddress, len(@CleanedAddress) -3) + ' Close'
WHERE Right(@CleanedAddress,3) = ' cl'
您已经在寻找 '% cl. %' 会按原样工作,它只是第一个更有可能提供错误匹配的
您可以做一些更一般的事情:
SELECT @CleanedAddress = LTRIM(RTRIM(REPLACE(' ' + @CleanedAddress + ' ', ' cl ', 'Close ') ) )
WHERE @CleanedAddress LIKE '% cl%'
在 SQL 服务器中,我正在清理字符串以删除街道名称中的缩写:
-- 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" 替换为 "Close" 而不是所有出现的 "CL" 并将其应用于可能以 "CL" 结尾的数千个字符串?
您可以尝试改用 RIGHT 字符串,我特别选择了右 3,这样您就可以查找 space 后跟 cl - 这样可以防止它在任何以 [ 结尾的道路名称上出现=15=]。
SELECT @CleanedAddress = LEFT(@CleanedAddress, len(@CleanedAddress) -3) + ' Close'
WHERE Right(@CleanedAddress,3) = ' cl'
您已经在寻找 '% cl. %' 会按原样工作,它只是第一个更有可能提供错误匹配的
您可以做一些更一般的事情:
SELECT @CleanedAddress = LTRIM(RTRIM(REPLACE(' ' + @CleanedAddress + ' ', ' cl ', 'Close ') ) )
WHERE @CleanedAddress LIKE '% cl%'