SQL:使用 REGEXP_REPLACE 删除表的另一列中的部分字符串
Posted
技术标签:
【中文标题】SQL:使用 REGEXP_REPLACE 删除表的另一列中的部分字符串【英文标题】:SQL: Remove part of string that is in another column of the table using REGEXP_REPLACE 【发布时间】:2020-10-12 18:28:38 【问题描述】:我有一列看起来像这样,但行数更多:
| CatName | Message |
| Garfield | You are a great cat Garfield |
| Goofy | I do not like Goofy, he is a mediocre cat |
| RoseMary | You are a great cat RoseMary |
| Joe | Joe, you are like a ferocious lion! |
| Astrid | Cat food is tasty |
现在,我正在尝试从表中每一行的消息中删除猫的名称,以便我可以看到发送给每只猫的消息是什么,以及哪些猫收到了相同的消息(即这样我会能够看到加菲猫和罗斯玛丽收到了相同的信息)。
SELECT
Message,
CatName,
REGEXP_REPLACE(Message, '^' || CatName, '') msg_no_name
FROM cat_table
我试图用 regexp_replace 来解决这个问题(我想用任何内容替换每条消息的 CatName 部分——但我认为我弄错了*。任何人都可以看到我出错的地方,或者有更好的建议我该如何解决这个问题?
BigQuery 抛出此错误:无法解析正则表达式:错误的重复运算符:???【问题讨论】:
【参考方案1】:为什么不直接使用replace()
?
select replace(message, catname, '')
【讨论】:
哦。谢谢你。这更有意义!因为我是 SQL 初学者,所以我把事情复杂化/谷歌搜索错误。 :)以上是关于SQL:使用 REGEXP_REPLACE 删除表的另一列中的部分字符串的主要内容,如果未能解决你的问题,请参考以下文章
将 regexp_replace 连接到 listagg:结果太长(SQL 错误:ORA-01489)
Hive SQL 查询中 Regexp_replace 的奇怪行为
Oracle SQL REGEXP_REPLACE - 除指定字符串外的所有内容