MySQL从字段字符串中删除由逗号分隔的单词组。

3
在mysql数据库中,我想从一个字段/列中删除一个字符串/部分。
我的字段"data"包含如下内容 -
1-----------,IDEA;T;P;N,VODAFONE;R;T;P;N,AIRCEL;R;T;N,---------------
2-----------,IDEA;T;P;N,VODAFONE;R;T;N,AIRCEL;R;T;N,---------------
3-----------,IDEA;T;P;N,VODAFONE;R;N,AIRCEL;R;T;N,---------------
4-----------,IDEA;T;P;N,VODAFONE;R;T;P,AIRCEL;R;T;N,---------------

在这个数据中,一个部分是通过“,”来区分的,这意味着“VODAFONE;R;T;P;N”将被表示为一个单词或组。

现在我该如何从字段中删除IDEA组、VODAFONE组或AIRCEL组。

e.g. UPDATE mytable SET data="-----------,IDEA;T;P;N,AIRCEL;R;T;N,---------------"(olddata removing VODAFONE Group)

1
这个数据库设计看起来确实很奇怪。你有没有读过关于规范化原子性的相关内容? - Eggplant
谢谢您的回复。现在我正在处理其他数据库,无法对其进行任何操作。所以我现在很无助。我需要从字段中删除一部分内容。您能帮我吗? - newcomer
1个回答

1
 UPDATE mytable SET data=
 CASE
 WHEN data LIKE '%VODAFONE;R;T;P;N,%' THEN REPLACE(data,'VODAFONE;R;T;P;N,','')
 WHEN data LIKE '%VODAFONE;R;N,%' THEN REPLACE(data,'VODAFONE;R;N,','')
 WHEN data LIKE '%VODAFONE;T;P;N,%' THEN REPLACE(data,'VODAFONE;T;P;N,','')
 WHEN data LIKE '%VODAFONE;R;T,%' THEN REPLACE(data,'VODAFONE;R;T,','')
 END
 WHERE data LIKE '%VODAFONE%'

将“VODAFONE blah”替换为您想要删除的字符串。这将在所有字段中删除它。 编辑。只需放入所有您需要的情况,如果需要更多。

谢谢,它对于确切的值“VODAFONE;R;T;P;N,”起作用,但在某些字段中它包含为“VODAFONE;R;N,”或“VODAFONE;T;P;N,”或“VODAFONE;R;T;”这种情况我们该如何处理? - newcomer
很棒,假设我们不知道Vodafone之后的r是什么。正如我已经提到的,单词或组由逗号区分,我想删除包含Vodafone的特定组。 - newcomer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接