使用regexp splitpart按分隔符拆分文本和数字



从下表

customer_id     config_json
a5  {"required_capacity": true, "setup_wizard_completed": true, "cancelation_time_minutes": 0, "display_no_preference_in_booking": true}
b16 {"required_capacity": null, "setup_wizard_completed": true, "cancelation_time_minutes": 0, "display_no_preference_in_booking": true}
{"required_capacity": true, "cancelation_time_minutes": 0, "display_no_preference_in_booking": true}

我想把config_json列分成2列,如下所示

customer_id     name                   value
a5             required_capacity       true
a5             setup_wizard_completed  true 
...
b16            required_capacity       null

代码的正则表达式部分目前看起来像这样:

REGEXP_REPLACE(split_part(mp.config_json,', ',s.id),'[{}": ]|(true|false||null)','')

然而,仍有一些保留,如:

customer_id  name                          value
a5          cancelation_time_minutes0 
b16         custom_sender_idadsd     
因此,上面的公式不仅需要分割真、假或空,还需要分割数字或字符串。我如何修复这部分代码?

您可以使用json_each():

select t.customer_id, config.key as name, config.value
from t cross join lateral
json_each(t.config_json::json) config;

这是一个db<>小提琴

相关内容

  • 没有找到相关文章

最新更新