Teradata sql 拆分未定义的分隔符数字
Teradata sql Split undefined delimiter number
我有一个 table p
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)
谢谢
除了 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
我有一个 table p
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)
谢谢
除了 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