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

如何修正正则表达式以正确拆分config_json字段为键值两列

解决方案

优先方案:使用原生JSON解析函数

绝大多数主流SQL引擎(PostgreSQL、BigQuery、Hive、Spark SQL等)都内置了JSON结构解析函数,稳定性远高于正则拆分,示例(PostgreSQL写法):

SELECT 
  t.customer_id,
  j.key AS name,
  j.value AS value
FROM 你的表名 t,
     json_each_text(t.config_json::json) j;

Hive/Spark SQL可搭配explode+json_tuple实现相同效果,自动适配所有JSON值类型(布尔、空值、数字、字符串),不会出现残留问题。

强制使用正则的修正方案

如果确实只能用正则实现,你原代码的核心问题是没有区分键、值的提取逻辑,仅删除了固定的布尔/空值,未覆盖数字、字符串,修正后拆分逻辑如下:

  1. 先按逗号分割得到单个键值对,和你原逻辑一致
  2. 单独提取键:匹配双引号包裹、后面紧跟冒号的内容
    REGEXP_EXTRACT(split_part(mp.config_json, ', ', s.id), '"([^"]+)"\\s*:', 1) AS name
    
  3. 单独提取值:匹配冒号后面、逗号/大括号前面的内容
    TRIM(REGEXP_EXTRACT(split_part(mp.config_json, ', ', s.id), ':\\s*([^,}]+)', 1), '" ') AS value
    

原代码问题说明

你原有代码直接将键和值里的{ } " :以及布尔、空值统一替换为空,没有区分键、值的边界,遇到数字、字符串类型的取值时,值内容没有被匹配删除,就会和键拼接在一起出现残留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:06:00