拆分字符串Teradata SQL

clo*_*d36 1 sql database substring teradata

我正在寻找在Teradata中拆分字符串的方法。

该表可能看起来像这样。

column1
hello:goodbye:afternoon
Run Code Online (Sandbox Code Playgroud)

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

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

我收到以下错误。

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

我不确定为什么会收到该错误。它使我可以使用INDEX来代替INSTR来推导一个数字,因此我不确定为什么当我使用INSTR时它为何以这种方式工作。

dno*_*eth 7

如果这是TD14 INSTR,则不需要,这里有一个STRTOK功能:-)

STRTOK(column1,':',2),
Run Code Online (Sandbox Code Playgroud)

对于早期版本,它是

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
Run Code Online (Sandbox Code Playgroud)

CASE LIKE北京时间只是为了防止“ 串标出界的 ”错误时,有没有冒号。

  • STRTOK 仅适用于单个分隔符。如果分隔符由两个字符(例如“->”)短划线和大于号组成怎么办? (2认同)