mysqlでJSON内のフィールドをクエリする方法は何ですか?
MySQLでJSONフィールドをクエリする際には、JSON_EXTRACT関数を使用することができます。この関数は、2つのパラメーターを受け取ります:1つ目はクエリするJSONフィールドで、2つ目は抽出するキーパスです。
例えば、dataというJSONフィールドがあるとします。その中には以下の内容が含まれています。
{
"name": "John",
"age": 30,
"address": {
"city": "New York",
"state": "NY"
}
}
nameキーの値をデータフィールドで検索するには、以下のクエリ文を使用してください。
SELECT JSON_EXTRACT(data, '$.name') AS name FROM table_name;
結果は”名前”キーの値を返します。
JSONフィールド内のキーの値を検索する場合、階層を表すためにドットを使用することができます。例えば、dataフィールド内のaddressキーの下にあるcityキーの値を検索するには、次のクエリを使用します:
SELECT JSON_EXTRACT(data, '$.address.city') AS city FROM table_name;
結果は、都市キーの値を返します。
dataフィールド内の値を検索するには、インデックス番号を使用します。たとえば、dataフィールドにhobbiesという名前のJSON配列が含まれているとします。
{
"name": "John",
"age": 30,
"hobbies": ["swimming", "reading", "traveling"]
}
hobbies配列の最初の値を検索したい場合、以下のクエリ文を使用してください。
SELECT JSON_EXTRACT(data, '$.hobbies[0]') AS first_hobby FROM table_name;
結果は、趣味の配列の最初の値を返します。
注意,上記のクエリ文中のtable_nameは、実際のテーブル名に置き換えてください。