溫馨提示×

MySQL中JSONPath的語法與使用技巧

小樊
81
2024-09-13 20:58:34
欄目: 云計(jì)算

MySQL 支持通過 JSONPath 表達(dá)式來查詢和操作 JSON 數(shù)據(jù)

  1. 語法:
  • $:表示根元素。
  • @:表示當(dāng)前元素。
  • .[]:用于訪問對象的屬性或數(shù)組的元素。
  • ..:用于遞歸下降。
  • *:用于通配符,可以匹配所有的屬性或元素。
  • []:用于數(shù)組索引或?qū)傩赃x擇。
  • [start:end:step]:用于提取數(shù)組或字符串的一部分。
  • ?():用于應(yīng)用過濾器表達(dá)式。
  1. 使用技巧:
  • 查詢 JSON 數(shù)據(jù): 使用 JSON_EXTRACT() 函數(shù)可以根據(jù) JSONPath 表達(dá)式從 JSON 列中提取數(shù)據(jù)。例如:

    SELECT JSON_EXTRACT(json_column, '$.property') FROM table_name;
    
  • 更新 JSON 數(shù)據(jù): 使用 JSON_SET() 函數(shù)可以根據(jù) JSONPath 表達(dá)式更新 JSON 列中的數(shù)據(jù)。例如:

    UPDATE table_name SET json_column = JSON_SET(json_column, '$.property', 'new_value');
    
  • 刪除 JSON 數(shù)據(jù): 使用 JSON_REMOVE() 函數(shù)可以根據(jù) JSONPath 表達(dá)式刪除 JSON 列中的數(shù)據(jù)。例如:

    UPDATE table_name SET json_column = JSON_REMOVE(json_column, '$.property');
    
  • 插入 JSON 數(shù)據(jù): 使用 JSON_INSERT() 函數(shù)可以根據(jù) JSONPath 表達(dá)式在 JSON 列中插入數(shù)據(jù)。例如:

    UPDATE table_name SET json_column = JSON_INSERT(json_column, '$.property', 'new_value');
    
  • 合并 JSON 數(shù)據(jù): 使用 JSON_MERGE_PATCH() 函數(shù)可以根據(jù) JSONPath 表達(dá)式合并兩個(gè) JSON 對象。例如:

    UPDATE table_name SET json_column = JSON_MERGE_PATCH(json_column, '{"property": "new_value"}');
    
  • 使用通配符: 使用 * 通配符可以匹配所有的屬性或元素。例如:

    SELECT JSON_EXTRACT(json_column, '$.*.property') FROM table_name;
    
  • 使用數(shù)組索引: 使用 [] 可以訪問數(shù)組的特定元素。例如:

    SELECT JSON_EXTRACT(json_column, '$[0].property') FROM table_name;
    
  • 使用過濾器表達(dá)式: 使用 ?() 可以應(yīng)用過濾器表達(dá)式。例如:

    SELECT JSON_EXTRACT(json_column, '$.items[?(@.price < 10)].name') FROM table_name;
    

總之,熟練掌握 MySQL 中的 JSONPath 語法和使用技巧,可以幫助你更高效地處理 JSON 數(shù)據(jù)。

0