sqlite字符串替换/删除

时间:2015-10-27 05:58:36

标签: sql string sqlite

我的数据库表中有一个名为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命令)。

1 个答案:

答案 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')