MySQL 删除逗号分隔字段中的某一个值

文章表中,tags 字段存储着一个或者多个标签,标签之间使用“,”隔开,比如,一篇文章的 tags 字段是 “前端,JavaScript,SCSS,HTML”,现在想删除“JavaScript”,变成 “前端,SCSS,HTML”。


方法如下:

UPDATE tb_article AS a SET a.tags=TRIM(BOTH ',' FROM REPLACE(concat(',',a.`tags`,','), ',JavaScript,', '')) WHERE FIND_IN_SET('JavaScript', a.tags);


核心部分是:

UPDATE tb_article AS a SET a.tags=TRIM(BOTH ',' FROM REPLACE(concat(',',a.`tags`,','), ',JavaScript,', ''))


解释:

先给 tags 字段首尾拼接两个逗号, 变为:“,前端,JavaScript,SCSS,HTML,” 再使用replace将 “,JavaScript,” 替换为一个逗号后。

这时字符串变成“,前端,SCSS,HTML,” 再使用 trim(both from )将首尾的逗号去掉。这时就删除了逗号分隔字段中的某一个值。

声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
随机推荐
JavaScript console 的用法
WordPress 后台添加菜单
JavaScript 对象
JavaScript location对象
Wordpress 主样式表(style.css)
JavaScript 代码混淆加密工具 javascript-obfuscator
Express.js CSRF 安全防护
Nginx 使用 Njs 授权访问文件