Страницы

Поиск по вопросам

среда, 22 января 2020 г.

Как заставить JSON_SEARCH понять, что я ищу число?

#mysql #sql #json


На запрос

SELECT JSON_SEARCH('[3]', 'one', 3) as 'index' // в массиве число, ищу число


мне отвечают

[
    {
      "index": null
    }
]


А на запрос

SELECT JSON_SEARCH('[\"3\"]', 'one', '3') as 'index' // в массиве строка, ищу строку


мне отвечают

[
    {
      "index": "\"$[2]\""
    }
]


Но на запрос

SELECT JSON_SEARCH('[\"3\"]', 'one', 3) as 'index' // в массиве строка, ищу число


мне тоже отвечают

[
    {
      "index": "\"$[2]\""
    }
]


Вопрос - как заставить mysql понять, что я ищу число?
    


Ответы

Ответ 1



Если кратко, то никак. Это баг в MySQL, хотя его и исправили, добавив в документацию, что аргументом JSON_SEARCH () должна быть строка. За состоянием дел можно следить в feature request'е. В MariaDB данной проблемы нет. Однако различий между числовыми и строковыми значениями также не делается. По мотивам Как совместить JSON_REMOVE и JSON_SEARCH в одном запросе?

Комментариев нет:

Отправить комментарий