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

如何从表的JSON字段中解析出目标电话号码值?

提取JSON数组中的电话号码并匹配目标值

问题分析

你之前的查询未成功有两个核心原因:

  • 仅筛选了数组的第一个元素(f.index = 0),但目标号码15558675309对应的是数组第二个元素的data字段值+15558675309;
  • 直接将f.value转为字符串会得到整个JSON对象的字符串,而非单独提取data字段的电话号码值。

正确查询语句

如果你需要提取并清洗所有号码,筛选出匹配目标值的记录,可使用以下SQL:

SELECT
  party_id,
  f.value:data::STRING AS original_phone,
  -- 移除所有非数字字符,统一号码格式
  REGEXP_REPLACE(f.value:data::STRING, '[^0-9]', '') AS cleaned_phone
FROM
  main__parties,
  LATERAL FLATTEN(input => party_phones) f
WHERE
  REGEXP_REPLACE(f.value:data::STRING, '[^0-9]', '') = '15558675309'

说明

  • f.value:data::STRING 用于精准提取每个数组元素中的data字段(即原始电话号码);
  • REGEXP_REPLACE 函数移除号码中的所有非数字字符,确保不同格式的同一号码(如555-867-5309和+15558675309)都能匹配到目标值15558675309;
  • 若只需提取特定位置的号码,可调整WHERE条件(比如f.index = 1),但清洗格式后匹配的方式更灵活,能覆盖所有等价号码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:28:22