【发布时间】:2021-12-06 19:51:24
【问题描述】:
我对 Teradata 有点陌生。我更熟悉 Presto SQL,其中 split_part 可用。
我希望在空格、连字符、空格 (' - ') 上拆分字符串。
示例:“沃尔玛 - 目标 - 百思买 - K-Mart - 史泰博”
我习惯使用 split_part(split_part(COLUMN, ' - ',2), ' - '), 1) 来获取 Target,它忽略了 Wal-Mart 和 K-Mart 中的连字符,因为连字符不是前后加一个空格。
但是,我不知道如何使用 Teradata 获取“目标”。
strtok() 似乎只适用于单个字符,这还不够,因为我想在 3 (' - ') 上拆分。
任何帮助将不胜感激!
【问题讨论】:
-
您也许可以使用 REGEXP_SPLIT_TO_TABLE 它可以有一个多字符模式。但是对于 REGEXP_SUBSTR 尝试
'(^|(\ -\ ))\K.*?(?=($|\ -\ ))'的模式。 -
这一定是有史以来最糟糕的分隔符。
-
实际上空格不需要转义,除非你使用 matcharg 'x' 所以你可以使用稍微简单的
'(^|( - ))\K.*?(?=($|( - )))'
标签: sql regex teradata regexp-substr