我的数据库表中有一个名为tags
的列,其中包含逗号分隔的字符串,它有这样的记录 -
index | tags
-------------
1 | a,b,c
2 | b
3 | c
4 | z
5 | b,a,c
6 | p,f,w
7 | a,c,b
(为简单起见,我表示带字符的字符串)
现在我想替换/删除特定的字符串。
删除 - 说我要从所有行中删除b
。如果tags
列在此操作后变为空,则应删除行/记录(在这种情况下为索引2)。此操作后我的记录应如下所示。
index | tags
-------------
1 | a,c
3 | c
4 | z
5 | a,c
6 | p,f,w
7 | a,c
替换 - 说我想在原始记录上用a
替换所有k
index | tags
-------------
1 | k,b,c
2 | b
3 | c
4 | z
5 | b,k,c
6 | p,f,w
7 | k,c,b
问题 - 我正在考虑以某种方式使用replace
功能但不确定如何满足上述要求。我可以在单个sql命令中执行此操作吗?如果没有,请建议最好的方法(可能是多个sql命令)。
答案 0 :(得分:0)
我使用MSSQL,我不确定sqlite。但是,您使用REPLACE
函数,如下所示:
删除b
:
UPDATE Your_Table
SET tags = REPLACE(REPLACE(tags, ',b', ' '), 'b,', ' ')
UPDATE Your_Table
SET tags = NULL WHERE tags = 'b'
将a
替换为k
:
UPDATE Your_Table
SET tags = REPLACE(tags, 'a', 'k')