例如,考虑下面这样一个表( table name=accounts)
```
account owner_ids
PA account sa123,rt458,hf678,de348f
RA account gg678n,fk980,rt458,hf678
这里,我要删除 `owner_ids "rt458" and "hf678"` 从整个表中删除逗号后,逗号应该是完美的(我的意思是删除后,其余的所有者标识也应该像以前一样用逗号分隔,列中不应该有任何不必要的逗号)
谢谢你的帮助,帮帮我,伙计们
2条答案
按热度按时间jvlzgdj91#
首先在字段前面加上逗号
CONCAT(',', owner_ids, ',')
使之统一。然后,移除
,rt458,
以及,hf678,
从它那里。后来去掉开头和结尾的逗号,我们添加了逗号以使结构统一。
这将在值之间保留一个逗号。
请注意,您应该更喜欢标准化
owner_ids
因此,这样的更新很容易处理。gtlvzcf82#
您可以使用replace函数两次:
replace返回char,每次出现的搜索字符串都替换为替换字符串。
或者可以使用regexp\u replace替换/删除regex中的值:
regexp\u replace通过让您在字符串中搜索正则表达式模式来扩展replace函数的功能。
要支持rt458是csv列表中第一个条目的情况(如@timbiegeleisen所评论的),您必须不允许使用逗号,因为:
使用replace时,您需要进行两次呼叫:
您还可以看到其他从逗号分隔的字符串中删除值的解决方案