我正在寻找一种提取Teradata中某个字符之前和之后的文本的方法。例如,我有一列是一致的,除了中间的单词(我想提取该单词)。
我有两个例子:
我需要在“:”之后和“,”之前存在的文本-在这种情况下为ABCD或EFGH。到目前为止,我有SUBSTRING (column FROM POSITION ('DD: ' IN column) +4)
,但是它返回{:1之后的所有内容,例如ABCD, ON DATE XXXX
。
答案 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。