{ "product_level": "A3", "grantcredit_28d_amount": 400000, "risk_level": "A", "grantcredit_30d_amount": 400000, "mid_rand_flow": 1, "pvalue_sd_rh_p1": 0.14455552872542543, "new_grade_level": "3", "model_score": 5, "credit_amount": 400000, "credit_asset_quality": "A" } 上面的这段json存在于PG库的一个名字为 grantcredit_info 字段中,我需要单独解析出来该json字段中的 grantcredit_30d_amount 值,并转化为 bigint 类型 表名为os_credit_snapshot 这段解析json字段取值的sql你写一下 用json_extract_path函数 或者json_array_elements函数完成解析
时间: 2023-07-19 13:07:46 浏览: 46
可以使用 `json_extract_path` 函数来解析该 JSON 字段,并取出 `grantcredit_30d_amount` 值。下面是 SQL 语句:
```sql
SELECT CAST(json_extract_path(grantcredit_info, 'grantcredit_30d_amount') AS BIGINT)
FROM os_credit_snapshot;
```
其中,`json_extract_path` 函数的第一个参数为待解析的 JSON 字段,第二个参数为要取出的字段名。`CAST` 函数用于将字符串类型转化为 bigint 类型。
相关问题
{ "product_level": "A3", "grantcredit_28d_amount": 400000, "risk_level": "A", "grantcredit_30d_amount": 400000, "mid_rand_flow": 1, "pvalue_sd_rh_p1": 0.14455552872542543, "new_grade_level": "3", "model_score": 5, "credit_amount": 400000, "credit_asset_quality": "A" } 上面的这段json存在于PG库的一个名字为 grantcredit_info 字段中,我需要单独解析出来该json字段中的 grantcredit_30d_amount 值,并转化为 bigint 类型 表名为os_credit_snapshot 这段解析json字段取值的sql你写一下
可以使用PostgreSQL提供的JSON函数来解析JSON字段中的值,具体的SQL语句如下:
```
SELECT (grantcredit_info ->> 'grantcredit_30d_amount')::BIGINT
FROM os_credit_snapshot;
```
其中,`grantcredit_info` 是JSON字段名,`'grantcredit_30d_amount'` 是要取出的键名,`::BIGINT` 是将取出的字符串转换为bigint类型。
CUS_PRODUCT_VER=`echo V${CUS_PRODUCT_VER:0:1}.${CUS_PRODUCT_VER:1:1}.${CUS_PRODUCT_VER:2:1}.${CUS_PRODUCT_VER:3:1}` 使用printf
将上述代码改写为使用 `printf` 函数的方式,可以这样写:
```
CUS_PRODUCT_VER=$(printf "V%s.%s.%s.%s" ${CUS_PRODUCT_VER:0:1} ${CUS_PRODUCT_VER:1:1} ${CUS_PRODUCT_VER:2:1} ${CUS_PRODUCT_VER:3:1})
```
`printf` 函数的第一个参数是格式化字符串,其中 `%s` 表示字符串,这里需要输出 4 个字符串,每个字符串都是从 CUS_PRODUCT_VER 变量中取出的一个字符,因此需要使用 4 个变量来表示这 4 个字符,分别是 `${CUS_PRODUCT_VER:0:1}`、`${CUS_PRODUCT_VER:1:1}`、`${CUS_PRODUCT_VER:2:1}`、`${CUS_PRODUCT_VER:3:1}`。在 `printf` 函数中,这 4 个变量按照指定的格式输出,中间用点号连接,最终得到格式化后的字符串,赋值给 CUS_PRODUCT_VER 变量。