我正在尝试从一个列创建2个新列。
我的数据看起来像这样:
userid:5438888,locationid:84646646478,property:g
我想为userid
制作一个新列,并为locationid
制作一个新列。还有更多的行,userid
S和locationid
S并不总是在整个数据集中相同的长度。
我假设有一种方法可以在:
之后和,
之前拆分文本,但是我不确定在字符串内两次它将如何工作。我不在乎字符串的属性部分。仅userid
和locationid
。
您应该能够使用split_to_map()
函数来完成此操作:
WITH data(attribution_site_id) AS (
VALUES 'userid:5438888,locationid:84646646478,property:g'
),
t AS (
SELECT split_to_map(attribution_site_id, ',',':') map
FROM data
)
SELECT element_at(map, 'userid') as userid,
element_at(map, 'locationid') as locationid
FROM t
产生:
userid | locationid
---------+-------------
5438888 | 84646646478