您可以在拆分结果上使用UNNEST:
WITH dataset AS (
SELECT * FROM (VALUES
('aaa,bbb'),
('aaa1,bbb1')
) AS t (str))
SELECT str_col
FROM dataset
CROSS JOIN UNNEST(split(str, ',')) as tmp(str_col)
输出:
| str_col |
| aaa |
| bbb |
| aaa1 |
| bbb1 |
UPD
如果您保证至少有一个逗号,那么它很简单:
WITH dataset AS (
SELECT * FROM (VALUES
('aaa,bbb'),
('aaa1,bbb1')
) AS t (str))
SELECT splt[1] last_name, splt[2] first_name
FROM
(SELECT split(str, ',') as splt
FROM dataset)
输出:
| last_name |
first_name |
| aaa |
bbb |
| aaa1 |
bbb1 |
如果您可以使用不同数量的逗号,但仅限于某些数量,您可以使用TRY:
WITH dataset AS (
SELECT * FROM (VALUES
('aaa,bbb'),
('aaa1,bbb1,ddd1')
) AS t (str))
SELECT splt[1], splt[2], TRY(splt[3])
FROM
(SELECT split(str, ',') as splt
FROM dataset)
输出:
| _col0 |
_col1 |
_col2 |
| aaa |
bbb |
|
| aaa1 |
bbb1 |
ddd1 |