На запрос
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 понять, что я ищу число?
Если кратко, то никак. Это баг в MySQL, хотя его и исправили, добавив в документацию, что аргументом JSON_SEARCH () должна быть строка. За состоянием дел можно следить в feature request'е.
В MariaDB данной проблемы нет. Однако различий между числовыми и строковыми значениями также не делается.
По мотивам Как совместить JSON_REMOVE и JSON_SEARCH в одном запросе?
Сборка персонального компьютера от Artline: умный выбор для современных пользователей