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 )将首尾的逗号去掉。这时就删除了逗号分隔字段中的某一个值。

声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
随机推荐
Node.js http 模块
WP_Query 函数参数
WordPress 文章页作者信息 get_the_author() 和 get_the_author_meta()
JavaScript 原生拖放
Express 使用模板引擎 EJS
如何使主题支持 Woocommerce
JavaScript 函数
用 JavaScript 实现数字增加滚动动画