проверьте, существует ли значение в массиве json encode в mysql

Я работаю над триггером Mysql, чтобы что-то сделать в моей базе данных. Прежде чем что-либо, я хочу проверить, существует ли значение в строке json_encode в моей таблице конфигурации и после этого приступить к запуску триггера. моя таблица config обрабатывается скриптами php и выглядит так:

------------------------------------------- | config_name | config_value | ------------------------------------------- | target_id | ["1","16","18","22","37"] | ------------------------------------------- 

в php мы можем использовать: if in_array (json_decode (config_value)) и …

но моя проблема заключается в синтаксисе Mysql, который не поддерживает in_array и json_decode

Как проверить, существует ли мое значение в 'config value' в триггере Mysql?

Как решить эту проблему

Если вы сохраняете JSON в mysql, убедитесь, что вы обновляетесь до mysql 5.7, тогда вы можете использовать диапазон доступных функций JSON . В вашем конкретном случае вы можете сделать

  SELECT * FROM my_table WHERE JSON_SEARCH(config_value,"one", "17") IS NOT NULL; 

То, что вы определенно должны делать

У вас есть проблемы с вашими данными. Если вы обнаружите, что всегда ищете поле JSON, то это означает, что ваша таблица должна быть нормализована.

обновление: раздел 2, название изменено, как было предложено @Sammitch

Спасибо за ваш ответ. Но, к сожалению, версия mysql равна 5.1, и ее невозможно обновить. На самом деле я добавляю некоторые функции в систему voipswitch. Таким образом, моя гибкость ограничена настоящими функциями.

Я выбираю несколько тарифов, и я хочу записывать вставленные вызовы (после вставки вызовов в таблицу «вызовы» через мой триггер), которые относятся к выбранным тарифам в списке для некоторых анализов.

Кроме того, я попытался использовать функцию сериализации php вместо json_encode для хранения идентификатора моего тарифа в таблице конфигурации. Но mysql также не поддерживает неэтериализацию.