Teradata sql拆分未定义的分隔符号

时间:2016-06-10 14:32:11

标签: sql teradata

我有一张桌子

  id_people  age 
     1       22
     2                 --->   (empty)
     3      (10,20)

我想得到像这样的结果

  id_people  age 
      1       22
      3       10
      3       20

我试过这个

    select t.id_people, 
    STRTOK(t.age,',',1) AS COL_1,STRTOK(t.age,',',2) AS COL_2 from 
(select id_people,age from p  where LENGTH(age) >0 ) t

首先,它有效,但我仍然有括号。我怎么能删除括号?第二个问题:它工作正常,因为我知道我连续只有一个逗号,如果我不知道列时代连续逗号的数量,我将无法通过这种方式处理。  我怎样才能在这种情况下使用某种循环? 示例:

 id_people    age 
   1        (17,18,19,20,21,22,23,24,25,....)
   2        (30,31,32)
   3         -->    (empty)

谢谢

1 个答案:

答案 0 :(得分:1)

除了STRTOK之外还有STRTOK_SPLIT_TO_TABLE: - )

语法有点不寻常:

WITH cte (id_people, age) AS
 (
   SELECT id_people, age FROM dropme
 )
SELECT * 
FROM TABLE
 ( STRTOK_SPLIT_TO_TABLE( cte.id_people , cte.age, '(),') 
   RETURNS ( id_people INT , TokenNum INT , Token VARCHAR (10) CHARACTER SET UNICODE ) 
 ) dt