В MySQL сбой json_search с целочисленным элементом в json_array - PullRequest
3 голосов
/ 17 апреля 2020

У меня есть 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

Я искал весь день, но я не знаю решения и прошу помощи.

1 Ответ

1 голос
/ 17 апреля 2020

Один вариант здесь, при условии, что у вас есть только один массив верхнего уровня из 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 как длина, которая является правильной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...