链式 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】:您可以通过TRIM
和REPLACE
使用以下内容:
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 函数在一次查询执行时仅替换一个值的主要内容,如果未能解决你的问题,请参考以下文章
Spark-sql CLI 在运行查询时仅使用 1 个执行程序