繁体   English   中英

MySql 查询以检索 value 的元素属性的值

[英]MySql query to retrieve value of element attribute of value

3

我有 mysql 表(比如付款),在 gateway_log 列中将网关回调日志作为内容(虽然是长文本),

 ["call_result",{"payment_id":"5917457","payment_status":"waiting","pay_address":"TPQs3925hQu5WATNz3gVMiRwzoPjnVRBCJ5","price_amount":400,"price_currency":"usd","pay_amount":"399.354663","amount_received":396.460139,"pay_currency":"usdttrc20","order_id":264,"order_description":null,"ipn_callback_url":,"created_at":"2022-04-01T14:54:40.151Z","updated_at":"2022-04-01T14:54:40.151Z","purchase_id":"4941944696","smart_contract":null,"network":"trx","network_precision":null,"time_limit":null,"burning_percent":null}]

我有两列 1-amount 2-gateway_log 在这个表中我有很多记录我想用 sql 查询将 amount_received 信息放在 amount 中并更新这个表的所有行,它有大约 1000 条记录。

现在,我想检索属性的值(在本例中为“amount_received”)。 我知道如何在 MS SQL 中做到这一点,例如:

SELECT ExtractValue(amount_received,'//amount_received/@??') as amount as name FROM payment WHERE payment_id='368'

但无法在MySQL中弄清楚。 注意:尝试了 MySQL 函数 ExtractValue() 但在检索元素属性时没有成功。 谢谢

这适用于 MySQL(5.7 及更高版本)

SELECT JSON_EXTRACT('["call_result", {
  "payment_id": "5917457",
  "payment_status": "waiting",
  "pay_address": "TPQs3925hQu5WATNz3gVMiRwzoPjnVRBCJ5",
  "price_amount": 400,
  "price_currency": "usd",
  "pay_amount": "399.354663",
  "amount_received": 396.460139,
  "pay_currency": "usdttrc20",
  "order_id": 264,
  "order_description": null,
  "ipn_callback_url": null,
  "created_at": "2022-04-01T14:54:40.151Z",
  "updated_at": "2022-04-01T14:54:40.151Z",
  "purchase_id": "4941944696",
  "smart_contract": null,
  "network": "trx",
  "network_precision": null,
  "time_limit": null,
  "burning_percent": null
}]', '$[1].amount_received')

请注意,您的 JSON 无效。

以非常相似的方式,您可以更新一个值:

SELECT JSON_SET('["call_result", {
  "pay_amount": "399.354663",
  "amount_received": 396.460139,
}]', '$[1].amount_received', 396.2)

或替换、搜索删除等...在https://dev.mysql.com/doc/refman/8.0/en/json-functions.html上查看更多信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM