Я использую json_search для поиска форматированных json-данных из столбца. Для нормальных json-данных он работает нормально. Но он не работает, если строка имеет двойную кавычку.
MySQL Query
SELECT JSON_SEARCH(user_information, 'one', '%name%', null, '$[*].label');
Он отлично работает для регулярных json-данных, но не работает для данных ниже, которые хранятся в базе данных одного столбца.
Пример данных, по которому запрос не работает:
[{
"name":"John Smith",
"value":"John",
"label":"Sm"ith"
}]
Здесь приведен пример db-скрипта.
Как вы можете видеть в данных, для ключа метки строка имеет значение sm"ith
Я", я только что добавил одну двойную кавычку середины строки, а затем она показывает ниже ошибку на db-скрипте.
Недопустимый текст JSON в аргументе 1 для функции json_search: "Отсутствие запятой или") после члена объекта. "
Но на моем локальном хосте он показывает ошибку ниже.
2014 - Команды не синхронизированы; вы не можете запустить эту команду сейчас
Вы должны использовать двойную обратную косую черту, см. " Создание значений JSON".
mysql> SELECT JSON_VALID('
'> [
'> {
'> "name":"John Smith",
'> "value":"John",
'> "label":"Sm"ith"
'> }
'> ]
'> ') 'is_json_valid?';
+----------------+
| is_json_valid? |
+----------------+
| 0 |
+----------------+
1 row in set (0.00 sec)
mysql> SELECT JSON_VALID('
'> [
'> {
'> "name":"John Smith",
'> "value":"John",
'> "label":"Sm\\"ith"
'> }
'> ]
'> ') 'is_json_valid?';
+----------------+
| is_json_valid? |
+----------------+
| 1 |
+----------------+
1 row in set (0.00 sec)