mysql - 无法读取 MySQL 中的 JSON 数据

标签 mysql sql

当我读取 JSON 数据时 -

示例查询:

SELECT *
FROM
  JSON_TABLE(
          CONCAT('[', '351615,12345678', ']'),
          "$[*]"
          COLUMNS(
              ids BIGINT(20) PATH "$"
              )
      ) AS tt

错误:

"Missing a comma or ']' after an array element." at position 2.

当我删除整数前面的 00 时,它会给出正确的结果。

SELECT *
FROM
  JSON_TABLE(
          CONCAT('[', '351615,12345678', ']'),
          "$[*]"
          COLUMNS(
              ids BIGINT(20) PATH "$"
              )
      ) AS tt

输出:

351615
12345678

有人可以建议我缺少什么吗?

最佳答案

您可以使用 JSON_ARRAY 而不是连接字符串来获取 JSON 数组值:

-- single value
SELECT *
FROM JSON_TABLE(
  JSON_ARRAY('00351615'),
  "$[*]"
  COLUMNS(
    ids BIGINT(20) PATH "$"
  )
) AS tt

-- multiple values
SELECT *
FROM JSON_TABLE(
  JSON_ARRAY('00351615', '12345678'),
  "$[*]"
  COLUMNS(
    ids BIGINT(20) PATH "$"
  )
) AS tt

...或者您使用 " 转义该值:

-- single value
SELECT *
FROM JSON_TABLE(
  CONCAT('[', '"00351615"', ']'),
  "$[*]"
  COLUMNS(
    ids BIGINT(20) PATH "$"
  )
) AS tt

-- multiple values
SELECT *
FROM JSON_TABLE(
  CONCAT('[', '"00351615","12345678"', ']'),
  "$[*]"
  COLUMNS(
    ids BIGINT(20) PATH "$"
  )
) AS tt

您还可以使用 JSON_VALID 检查您的 JSON 值是否有效:

SELECT JSON_VALID(CONCAT('[', '00351615', ']')) -- 0 (not valid)

demo on dbfiddle.uk

关于mysql - 无法读取 MySQL 中的 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59856310/

相关文章:

mysql - 无法优化使用 ORDER BY 子句的 MySQL 查询

SQL关联实体问题

php - mySQL 和 PHP - 简单查询不起作用

mysql - 根据加入日期计算员工的下一个 3 周年纪念日

php - 如何对插入和更新进行单个查询?

php - 如何将从其他函数返回的变量与 mysql 中的匹配行进行比较

mysql - 从 MySQL 中的其他数据库链接表

html - HTML 输入表单中的小数分隔符

MySQL 统计数千行的最快方法

php - UTC 日期时间转换