Split String Teradata SQL

时间:2014-05-13 18:53:30

标签: sql database substring teradata

我希望在Teradata中分割一个字符串。

表可能看起来像这样。

column1
hello:goodbye:afternoon

我尝试使用SUBSTRING和INSTR来提取特定单词。所以,说我想选择"再见"。我正在尝试以下查询。

SELECT SUBSTRING(a.column1 from index(a.column1,':')+1 for INSTR(a.column1,':',0,2))
FROM db.table as a

我收到以下错误。

SELECT Failed. [3707] Syntax error, expected something like ')' between the word 'INSTR' and '('

我不确定为什么我会收到这个错误。它允许我使用INDEX来代替INSTR推导出一个数字,所以我不确定为什么当我使用INSTR时它会这样做。

1 个答案:

答案 0 :(得分:4)

如果这是TD14,你不需要INSTR,那就是STRTOK功能: - )

STRTOK(column1,':',2),

对于早期版本,它是

CASE 
   WHEN column1 LIKE '%:%:%'
   THEN SUBSTRING(column1 FROM POSITION(':' IN column1) + 1 FOR POSITION(':' IN 
        SUBSTRING(column1 FROM POSITION(':' IN column1) + 1)) - 1)
   WHEN column1 LIKE '%:%'
   THEN SUBSTRING(column1 FROM POSITION(':' IN column1) + 1)
END

CASE LIKE只是为了防止" 字符串下标超出约束"没有冒号时出错。