我需要在字符串中找到一个数值+引号(例如5“)。一旦找到,我需要用”pound“替换引号。不幸的是,字符串很复杂: 样本字符串
Work and run with Joe "The King" Mel using a 3" vest with "Dog-Bone" weights.
我试过了
SELECT REPLACE(REPLACE('Work and run with Joe "The King" Mel using a 3" vest with "Dog-Bone" weights.', '%[^0-9]"%', 'pound'), '"', 'pound')
但它用'pound'替换所有引号。
答案 0 :(得分:4)
这会找到第一个出现的数字,然后是"
,并将"
替换为pound
。
declare @s varchar(100)
set @s = 'Work and run with Joe "The King" Mel using a 3" vest with "Dog-Bone" weights.'
select stuff(@s, patindex('%[0-9]"%', @s)+1, 1, ' pound')
如果您有多个,可以将它放入while循环中。
while patindex('%[0-9]"%', @s) > 0
begin
set @s = stuff(@s, patindex('%[0-9]"%', @s)+1, 1, ' pound')
end
答案 1 :(得分:0)
如果无法为要进行的更改表达确定性算法,则永远无法将正则表达式编写为实现。
你写了两个替换表达式:一个只替换数字后的引号,但另一个替换所有的引号,句号。
答案 2 :(得分:0)