Teradata子字符串在某些字符之前和之后

时间:2018-12-18 00:51:16

标签: sql teradata

我正在寻找一种提取Teradata中某个字符之前和之后的文本的方法。例如,我有一列是一致的,除了中间的单词(我想提取该单词)。

我有两个例子:

  1. “客户激活的帐户DD:ABCD,在XXXX日生效”
  2. “客户已激活帐户DD:EFGH,XXXX天”

我需要在“:”之后和“,”之前存在的文本-在这种情况下为ABCD或EFGH。到目前为止,我有SUBSTRING (column FROM POSITION ('DD: ' IN column) +4),但是它返回{:1之后的所有内容,例如ABCD, ON DATE XXXX

2 个答案:

答案 0 :(得分:0)

对于给定的要求,您可以使用正则表达式提取':'和','之间的信息。

SELECT regexp_substr('Customer Activated Account DD: EFGH, ON DATE XXXX','[^:,]+',1,2);
SELECT regexp_substr('Customer Activated Account DD: ABCD, ON DATE XXXX','[^:,]+',1,2);

[^ :,]用于分割字符串,然后第二个位置字是必需的输出

答案 1 :(得分:0)

我同意在这种情况下regexp_substr更好。但是,如果定界符是固定的,strtok会很有帮助。在您的情况下,这可能有效:

STRTOK(STRTOK(column,':',2),',',1)

第一个参数是输入字符串/列;第二个定界符;第三个是观察数n。

相关问题