如何从SQL行中的列中删除特定值?

时间:2017-05-05 20:46:31

标签: mysql sql

我是SQL的初学者。目前,我正在使用具有两列的SQL数据库。第一列指定id。第二列指定了由分隔符“@ d @”分隔的人员列表。因此,该列看起来像“John @ d @ Jack @ d @ Prince”

我需要从此列表中删除特定名称。假设,我正在删除列表中的王子。删除操作后,我希望我的行看起来像John @ d @ Jack。我正在研究这个程序的解决方案,我找到了几个资源。我了解了这种方法“UPDATE TABLE SET columnName = null WHERE YourCondition”因此,我可以将整列更改为null,但我不知道如何保留字符串并仅删除指定的值。

3 个答案:

答案 0 :(得分:0)

如果我没有弄错你正在寻找的命令是

UPDATE TABLE set columnName = "John@d@Jack" WHERE YourCondition

或者您想要更通用的方法吗?

答案 1 :(得分:0)

您可以使用替换功能

update yourTable set yourField = replace(replace(yourField, 'Prince', ''), '@@' , '@') where yourCondition;

首先替换“删除”您想要的名称,然后再替换“删除”已删除名称的分隔符。

答案 2 :(得分:0)

您可以使用以下方式执行此操作:

update t
    set list = trim(both '@' from replace(concat('@', list, '@'), concat('@', 'prince', '@'), '@'))
    where concat('@', list, '@') like concat('%@', 'prince', '@%');

您可以将'prince'替换为您要替换的变量或其他任何内容。