【问题标题】:Select Numbers Before and After String Values - Presto SQL选择字符串值前后的数字 - Presto SQL
【发布时间】:2019-03-21 07:02:59
【问题描述】:

我正在尝试从单个列创建 2 个新列。

我的数据如下所示:

userid:5438888,locationid:84646646478,property:g

我想为userid 创建一个新列,为locationid 创建一个新列。还有更多行,userids 和 locationids 在整个数据集中并不总是相同的长度。

我假设有一种方法可以在 : 之后和 , 之前拆分文本,但我不确定它如何在字符串中执行两次。我不关心字符串的属性部分。仅useridlocationid

【问题讨论】:

  • 我用下面的代码尝试了那个论坛,但是没有得到任何带有 t 的值(SELECT split_to_map(attribution_site_id, ',',':') map from table) select element_at(map, 'userid ') as u1, element_at(map, 'locationid') as u2 from t

标签: sql presto


【解决方案1】:

您应该可以使用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

【讨论】:

    猜你喜欢
    • 2020-10-27
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 2015-07-08
    • 2014-04-04
    • 2015-10-17
    • 2012-02-26
    • 2022-06-16
    相关资源
    最近更新 更多