我想将给定的逗号分隔字符串拆分为列。
我有一个包含两列的表格:
示例:
create table t3
(
cola varchar,
colb varchar
);
插入:
insert into t3 values('AD1','2000-01-01to2000-02-01'),
('AD2','2000-03-01to2000-04-01'),
('AD3','2000-05-01to2000-06-01');
现在我想从上面给定的记录准备两个逗号分隔的字符串,如下所示:
str1 varchar = 'AD1,AD2,AD3';
str2 varchar = '2000-01-01to2000-02-01,2000-03-01to2000-04-01,2000-05-01to2000-06-01';
现在我想存储逗号分隔的字符串,在第二个字符串中有到以分隔成两个日期,想要 存储到临时表中。
像这样:
预期输出:
c1 c2 c3
---------------------------------
AD1 2000-01-01 2000-02-01
AD2 2000-03-01 2000-04-01
AD3 2000-05-01 2000-06-01
答案 0 :(得分:1)
您可以使用以下方式获得所需的输出:
select cola as col1,
cast(left(colb, 10) as date) as col2,
cast(right(colb, 10) as date) as col2
from t3;
我不知道你为什么要创建中间逗号分隔的字符串,逻辑不需要这些字符串。
答案 1 :(得分:1)
split_part()
通常最简单,最快:
SELECT cola AS c1
, split_part(colb, 'to', 1)::date AS c2
, split_part(colb, 'to', 2)::date AS c3
FROM t3;
如果字符串中的一个或两个日期的长度不同,则此功能更强大,甚至可以正常工作。演员需要一个有效的日期字符串。
相关: