You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Presto中从列提取指定值?附数据示例与期望输出

实现思路解答

我有两列数据:

col1: Adam Smith 
col2: [{"productId":"328608","invoiceId":"16150101","productType":"car"}]

需要查询得到如下结果:

col1: Adam Smith 
ProductId: 328608

请问有可行的实现思路吗?感谢。

当然有可行的思路啦!得看你用什么工具处理这些数据,我给你整理了几种常见场景的实现方式:

1. 数据库中直接处理(主流数据库都支持)

如果你的数据存在数据库里(比如MySQL、PostgreSQL),可以直接用数据库的JSON解析函数来提取:

  • MySQL 5.7+:用->>运算符直接提取数组中第一个元素的productId,语句如下:
    SELECT col1, col2->>'$[0].productId' AS ProductId
    FROM your_table;
    
    也可以用JSON_UNQUOTE(JSON_EXTRACT(col2, '$[0].productId'))来实现,效果完全一致。
  • PostgreSQL:先把JSON数组展开,再提取目标字段:
    SELECT col1, (jsonb_array_elements(col2::jsonb)).productId AS ProductId
    FROM your_table;
    

2. Python(Pandas)处理

如果是用Python做数据处理,用Pandas的话可以这样操作:

import pandas as pd
import json

# 模拟你的数据集
df = pd.DataFrame({
    'col1': ['Adam Smith'],
    'col2': ['[{"productId":"328608","invoiceId":"16150101","productType":"car"}]']
})

# 解析JSON字符串并提取第一个元素的productId
df['ProductId'] = df['col2'].apply(lambda x: json.loads(x)[0]['productId'])

# 只保留需要的列
result_df = df[['col1', 'ProductId']]
print(result_df)

3. JavaScript/Node.js处理

如果是前端或者Node.js环境,直接解析JSON后提取即可:

// 模拟数据
const rawData = {
    col1: 'Adam Smith',
    col2: '[{"productId":"328608","invoiceId":"16150101","productType":"car"}]'
};

// 解析JSON数组并提取目标字段
const parsedArray = JSON.parse(rawData.col2);
const result = {
    col1: rawData.col1,
    ProductId: parsedArray[0].productId
};

console.log(result);

内容的提问来源于stack exchange,提问作者agustin85

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:36:49