首页 > 解决方案 > SQL查询替换/删除带有变量值的字符串的一部分,可以在字符串的任何部分

问题描述

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

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

此参数可以是任何顺序或不存在。我怎样才能摆脱其中一个参数,例如。中位数,并将所有其他人保留在字符串中?

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

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

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

标签: sqlstringreplacesql-updatessms

解决方案


我认为这会起作用:

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);

是 db<>fiddle 中的示例。


推荐阅读