Teradata 中WITH RECURSIVE 应用的一个实例

需求:对一个位数固定使用分隔符连接的字符串的拆分,如将记录215|482|850|870拆分为215,482,850,870四条记录
结果:WITH RECURSIVE 语句能够实现此功能,测试如下:
CREATE TABLE dwsdata.gift_info (
gf_id varchar(50),
channels varchar(100)
);

select * from  dwsdata.gift_info;
gf_id              channels
10710701010201002 215|482|850|870

WITH RECURSIVE temp_table (gf_id,channels) AS
(
select
 gf_id
 ,trim(channels)
from dwsdata.gift_info
where channels<>''
union all
select 
 gf_id
 ,substr(channels,5 )
from  temp_table aa
where   char(aa.channels ) <>3
)
select
 TRIM(gf_id)
 ,SUBSTR(channels,1,3)
from   temp_table
;
结果:
gf_id             channels
10710701010201002 215
10710701010201002 482
10710701010201002 850
10710701010201002 870

 

摘自:http://blog.csdn.net/fanxiaoliang83/archive/2009/07/30/4395288.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值