链式 REPLACE 函数在一次查询执行时仅替换一个值

Posted

技术标签:

【中文标题】链式 REPLACE 函数在一次查询执行时仅替换一个值【英文标题】:Chained REPLACE functions substitute only one value at one query execution 【发布时间】:2018-05-07 19:51:56 【问题描述】:

在 Album_IDs 1 和 8 下的元组中,我想用空 ('') 替换“Alternative”的“Genre”字段值。但是当我执行这个 SQL 脚本时,它一次只替换一个值。有没有办法留下字符串的一半(即“独立”类型,除了“替代”以及它周围的逗号和空格)并执行脚本以便所有值都被替换掉?我的代码有什么问题?

UPDATE Album
SET Genre = REPLACE(REPLACE(Genre, ', Alternative', ''), 'Alternative, ', '')
WHERE Album_ID < 9

【问题讨论】:

修复您的数据模型,这样您就不会将列表存储在字符串列中! 摆脱你的喜欢 @DanielMarcus,是的,我忘记了我上传了错误版本的脚本。 1 秒 看起来不错 - 你现在有什么问题?你到底得到了什么,你的预期结果是什么? 【参考方案1】:

您可以通过TRIMREPLACE 使用以下内容:

UPDATE Album
SET Genre = TRIM(TRIM(BOTH ',' FROM TRIM(REPLACE(Genre, 'Alternative', ''))))
WHERE Album_ID < 9

演示: http://sqlfiddle.com/#!9/3c6fe1/1/0

【讨论】:

谢谢,但在第八张唱片中,'Indie' 之前的逗号已经离开。 需要执行两次才能将其删除。对吗? 谢谢,它工作得很好。顺便问一下,你能告诉我,我的脚本出了什么问题吗? 您的查询看起来不错,但不能仅替换 Alternative

以上是关于链式 REPLACE 函数在一次查询执行时仅替换一个值的主要内容,如果未能解决你的问题,请参考以下文章

正则匹配之replace方法

Spark-sql CLI 在运行查询时仅使用 1 个执行程序

js的replace如何全部替换目标字符串

str_replace 怎样才只替换一次 - 技术问答

对JSON.parse()中存在转义字符的解决以及js中替换函数replace()的认识

replace函数