SQL查询以替换/删除带有变量值的字符串的一部分,该值可以在字符串的任何部分中

问题描述 投票:0回答:1

我有一个将多个参数作为一个字符串保存的字段

parameters = -start=0 -end=67 -median=12

此参数可以按任何顺序排列或不存在。如何摆脱参数之一,例如。中位数,并将其他所有字符串都保留?

此查询替换参数,但不替换'='之后的变量值

UPDATE table
SET parameters = REPLACE(parameters,'-median=','')
where parameters LIKE '%median%'

如何更新此查询以替换'-median =%'?

sql string replace sql-update ssms
1个回答
0
投票

我认为这会起作用:

select params,
       (case when params like '% -median=%'
             then stuff(params, 
                        charindex(' -median', v.params),
                        charindex(' ', v.params + ' ', charindex('-median', v.params)) - charindex(' -median', v.params),
                        ''
                       )
              else params
       end)
from (values ('parameters = -start=0 -end=67 -median=12'),
             ('parameters = -start=0 -median=12  -end=67')
     ) v(params);

Here是db <> fiddle中的示例。

© www.soinside.com 2019 - 2024. All rights reserved.