sql - SQL查询替换/删除带有变量值的字符串的一部分,可以在字符串的任何部分
问题描述
我有一个将多个参数保存为一个字符串的字段
parameters = -start=0 -end=67 -median=12
此参数可以是任何顺序或不存在。我怎样才能摆脱其中一个参数,例如。中位数,并将所有其他人保留在字符串中?
此查询替换参数,但不替换 '=' 之后的变量值
UPDATE table
SET parameters = REPLACE(parameters,'-median=','')
where parameters LIKE '%median%'
如何更新此查询以替换 '-median=%' ?
解决方案
我认为这会起作用:
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 中的示例。
推荐阅读
- android - 在当前位置和从服务器获取的位置之间绘制路线
- javascript - 过滤器组项的未捕获 ReferenceError
- angular - 子组件值更新后如何调用父组件页面功能(例如:更改日期选择器)
- excel - 使用宏进行十进制数据验证
- docker - docker saucelabs:无效的参考格式
- javascript - 在javascript中打印集合元素
- java - java如何改变排序的优先级
- mysql - MySQL 存储过程没有调用正确的 CASE
- c# - 如何在网格中设置 TextBlock 的边界?
- java - 如何修复'Android资源编译失败输出:values_values.arsc.flat:错误:打开失败。'