【问题标题】:Extract string with multiple criteria - sql提取具有多个条件的字符串 - sql
【发布时间】:2019-01-29 22:37:21
【问题描述】:

我们有一列不同的字符串值,如下所示。如何在 Redshift 中提取部分字符串并返回想要的结果?

例子

  1. 删除以下划线和数字开头的最后一部分(_1_MN,数字可以是 1-1000)
  2. 删除前导部分 (Ed_)
  3. 用空格替换任何剩余的下划线

字符串: Ed_Westside Ind 学区 94_Williams 小学_1_MN

期望的结果: Westside Ind 学区 94 威廉姆斯小学

【问题讨论】:

  • postgresql 红移。请删除 postgresql 标志

标签: postgresql amazon-redshift


【解决方案1】:

MySQL

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 则无效
猜你喜欢
  • 1970-01-01
  • 2018-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-29
相关资源
最近更新 更多