接着上一条问题,B字段有两条记录,一条是{"主商品名称.":"米家小米空气净化器ProH家用除甲醛除菌除二手烟味除异味静音设计AC-M7-SC","履约单号(填)":"300612751","延保服务名称.":"两年只换不修1001-3000","关联订单号.":"220087653007","延保Sku.":"100018934784","延保订单号.":"220087653007","服务商名称.":"海南惠聚"},另一条是{"服务商名称.":"惠聚信息技术(海南)有限公司","主商品名称.":"锐捷(Ruijie)RG-EW3200GX无线WIFI6路由器千兆双频3200Mmesh组网高速穿墙王","延保Sku.":"100039904510","延保订单号.":"246609520088","延保服务名称.":"鼠标\\路由器\\键盘60天深度体验赠2年质保换新A501-800","关联订单号.":"250764695297","履约单号(填)":"815079263"}
时间: 2023-07-03 14:30:58 浏览: 216
如果 B 字段有两条记录,一条是{"主商品名称.":"米家小米空气净化器ProH家用除甲醛除菌除二手烟味除异味静音设计AC-M7-SC","履约单号(填)":"300612751","延保服务名称.":"两年只换不修1001-3000","关联订单号.":"220087653007","延保Sku.":"100018934784","延保订单号.":"220087653007","服务商名称.":"海南惠聚"},另一条是{"服务商名称.":"惠聚信息技术(海南)有限公司","主商品名称.":"锐捷(Ruijie)RG-EW3200GX无线WIFI6路由器千兆双频3200Mmesh组网高速穿墙王","延保Sku.":"100039904510","延保订单号.":"246609520088","延保服务名称.":"鼠标\\路由器\\键盘60天深度体验赠2年质保换新A501-800","关联订单号.":"250764695297","履约单号(填)":"815079263"},那么只能解析出一条数据的原因可能是 SQL 语句的问题。具体来说,get_json_object 函数的第二个参数为“$.lvyuedanhao”,表示从 JSON 字符串中获取“lvyuedanhao”字段的值,但是这两条记录中都不存在“lvyuedanhao”字段,此时解析结果一定为空。因此,正确的 SQL 语句应该是:
```
select get_json_object(regexp_replace(B, '履约单号(填)', 'lvyuedanhao'), '$.lvyuedanhao') from A
```
修改为:
```
select get_json_object(regexp_replace(B, '履约单号(填)', 'lvyuedanhao'), '$.履约单号(填)') from A
```
这样就可以从 JSON 字符串中获取“履约单号(填)”字段的值了。执行此 SQL 语句后,应该可以得到两条记录的解析结果。
阅读全文