提取具有多个条件的字符串 - sql
Posted
技术标签:
【中文标题】提取具有多个条件的字符串 - sql【英文标题】:Extract string with multiple criteria - sql 【发布时间】:2019-01-29 22:37:21 【问题描述】:我们有一列不同的字符串值,如下所示。如何在 Redshift 中提取部分字符串并返回想要的结果?
例子
-
删除以下划线和数字开头的最后一部分(_1_MN,数字可以是 1-1000)
删除前导部分 (Ed_)
用空格替换任何剩余的下划线
字符串: Ed_Westside Ind 学区 94_Williams 小学_1_MN
期望的结果: Westside Ind 学区 94 威廉姆斯小学
【问题讨论】:
postgresql 红移。请删除 postgresql 标志 【参考方案1】:UPDATE products
SET col = SUBSTRING(col FROM 3)
WHERE col LIKE ('Ed_%')
UPDATE products
SET col = SUBSTRING(col FROM -5 )
WHERE col LIKE ('%_1_MN')
UPDATE products
SET col = REPLACE(col, '_', ' ')
【讨论】:
谢谢,阿萨莱姆。是否有可以在 Redshift 中运行且无需使用更新的 postgresql 版本? WHERE col LIKE ('%_1_MN') 将不起作用,因为每个结尾数字和字母都不同。 这不是 MYSQL 问题。【参考方案2】:虽然不是很优雅,但这很有效。
REGEXP_REPLACE(LEFT(RIGHT(name, LEN(name) - 3), LEN(name) -8) , '_', ' ')
【讨论】:
我认为这仅在给出的示例中有效,但如果数字>10 则无效以上是关于提取具有多个条件的字符串 - sql的主要内容,如果未能解决你的问题,请参考以下文章