json_searchを使用して、列からjson形式のデータを検索しています。通常のjsonデータの場合、正常に機能しています。ただし、文字列に二重引用符が含まれている場合は機能しません。
MySQLクエリ
SELECT JSON_SEARCH(user_information, 'one', '%name%', null, '$[*].label');
通常のjsonデータでは正常に機能しますが、単一列データベースに格納されている以下のデータでは機能しません。
クエリが機能していないデータの例:
[{
"name":"John Smith",
"value":"John",
"label":"Sm"ith"
}]
ここで、DB-フィドルこの例では。
データからわかるように、ラベルキーの文字列はですsm"ith
。文字列の中央に二重引用符を1つ追加したところ、db-fiddleで以下のエラーが表示されています。
関数json_searchの引数1のJSONテキストが無効です:「オブジェクトメンバーの後にコンマまたは「}」がありません。」
しかし、私のローカルホストでは、以下のエラーが表示されます。
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)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加