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 原型链
JavaScript 使用 html2canvas 生成图片
WordPress 语言文件
阿里云内容安全 API 签名机制
ES6 Promise 和 async/await 教程
WordPress 使用 shortcode() 增加编辑器功能
JavaScript 对象
JavaScript Date 类型