【问题标题】:In MySQL, json_search fail with integer element in json_array在 MySQL 中,json_search 因 json_array 中的整数元素而失败
【发布时间】:2020-07-30 13:53:23
【问题描述】:

我有一个 json_array [1, 2, 3, 3, 3],我想知道元素 '3' 在哪里。

例如,

json_search('[1, 2, 3, 3, 3]', 'all', 3) return null;
json_search('["1", "2", "3", "3", "3"]', 'all', '3') return ["$[2]", "$[3]", "$[4]"];

因此,

json_length(json_search('[1, 2, 3, 3, 3]', 'all', 3)) return null;

我想要 3

找了一天,不知道解决办法,求帮助。

【问题讨论】:

标签: mysql


【解决方案1】:

这里的一个选项,假设您只有一个 JSON 整数的顶级数组,将使用正则表达式替换技巧来计算 3 的数量:

WITH yourTable AS (
    SELECT '[1, 2, 3, 3, 3]' AS array
)

SELECT
    LENGTH(array) - LENGTH(REGEXP_REPLACE(array, '\\b3\\b', '')) AS num_3
FROM yourTable;

这将返回 3 作为长度,这是正确的。

【讨论】:

  • 我用的是mysql 5.7版本,所以不能用你说的方法,但是我有个大思路,解决了问题。非常感谢。
  • @serverwizard 感谢您的投票,但如果您的回答与我发布的内容有很大不同,但它有效,您应该考虑回答您自己的问题(是的——您实际上可以这样做)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-12
  • 2019-02-23
  • 2017-03-14
  • 1970-01-01
  • 1970-01-01
  • 2014-03-13
  • 1970-01-01
相关资源
最近更新 更多