【问题标题】:Looping through an array in SQL column循环遍历 SQL 列中的数组
【发布时间】:2022-01-06 16:17:48
【问题描述】:

我有一个如下所示的 SQL 表:

| ID  | Value                                                 |
| --- | ----------------------------------------------------- |
| 1   | {"name":"joe", "lastname":"doe", "age":"34"}          |
| 2   | {"name":"jane", "lastname":"doe", "age":"29"}         |
| 3   | {"name":"michael", "lastname":"dumplings", "age":"40"}|

如何使用 SQL 选择功能,仅选择“年龄”(在值列中)大于 30 的行?

谢谢。

【问题讨论】:

  • 什么是 DBMS?
  • 使用的DBMS是MySQL
  • 该列的数据类型是什么?
  • “值”列的数据类型为“longtext”。
  • SELECT VERSION(); 返回什么?

标签: mysql arrays select where-clause mysql-json


【解决方案1】:

Value 列包含有效的 JSON 数据。
您可以使用函数JSON_EXTRACT() 获取年龄并将其转换为数值,方法是添加0

SELECT *
FROM tablename
WHERE JSON_EXTRACT(Value, "$.age") + 0 > 30;

请参阅demo

【讨论】:

  • 谢谢,就像一个魅力:)
猜你喜欢
  • 1970-01-01
  • 2019-01-31
  • 1970-01-01
  • 2014-06-04
  • 1970-01-01
  • 1970-01-01
  • 2021-10-15
相关资源
最近更新 更多