Maison >base de données >tutoriel mysql >Comment utiliser la fonction json_extract dans MySQL

Comment utiliser la fonction json_extract dans MySQL

WBOY
WBOYavant
2023-06-02 20:16:091973parcourir

    1. Description du scénario d'utilisation de json_extract

    Dans le développement commercial quotidien, un champ de la base de données MySQL doit généralement stocker une chaîne au format json lors de l'interrogation, les données json sont parfois volumineuses et chaque fois qu'elles sont supprimées. , la requête est analysée. C'est moins efficace et plus gênant.

    Heureusement, Mysql5.7 et les versions ultérieures fournissent la fonction json_extract, qui peut interroger la valeur via la clé (s'il s'agit d'un type de tableau json, vous pouvez obtenir la valeur. de la position correspondante via l'indice), ce qui est très pratique.

    2. Introduction à la fonction MySQL json_extract

    2.1 Introduction à la fonction

    Nouvelles fonctions après la version Mysql5.7, Mysql fournit un type Json natif qui ne sera plus stocké sous forme de chaînes, mais sera stocké dans. a Un format binaire interne qui permet une lecture rapide des éléments du document. Le texte Json sera automatiquement vérifié lors de l'insertion ou de la mise à jour d'une colonne Json. Le texte qui échoue à la vérification générera un message d'erreur. Le texte Json est créé de manière standard et la plupart des opérateurs de comparaison peuvent être utilisés pour des opérations de comparaison, telles que : =, 91eef5681cad6f0cc96f9adeb2931b45, >=, a8093152e673feb7aba1828c43532094, != et <= > ;.

    2.2 Utilisation

    Les données stockées sont une chaîne json (le type est vachar).

    Si vous souhaitez interroger la valeur d'un certain champ en json, la méthode utilisée est : JSON_EXTRACT().

    Syntaxe :

    **JSON_EXTRACT(json_doc, path[, path] …)**

    Conseils d'utilisation :

    • Si la chaîne json n'est pas un tableau, utilisez $.Field name directement  $.字段名

    • 如果json字符串是数组[Array],则直接使用 $[对应的索引ID]

    2.3 注意事项

    JSON_EXTRACT性能验证 , 通过查看执行计划,验证全部都是全表扫描。
    使用场景:数据量不大json字符串较大则可以采用,数据量较大不建议使用。

    3. 数据验证

    3.1 提取普通json中的值

    说明:

    • 普通字段使用 $.KEY 获取

    • 数组字段使用 $.KEY[index]

    • Si la chaîne json est un tableau [Array], utilisez directement $[corresponding index ID]

    2.3 Notes

    Vérification des performances JSON_EXTRACT, en visualisant l'exécution le plan et la vérification sont tous des analyses de table complètes.
    Scénarios d'utilisation : Si la quantité de données est petite, elle peut être utilisée si la chaîne json est grande. Cependant, si la quantité de données est grande, cela n'est pas recommandé. 3. Vérification des donnéesEn utilisation réelle, la chaîne json suivante doit uniquement être remplacée par le champ de table correspondant, mais veuillez noter que la conversion ETL telle que l'annulation et le remplacement de json sont requis. "sing"
    3.1 Extraire les valeurs du json ordinaire Instructions : Utilisez $.KEY pour les champs ordinaires pour obtenir Utilisez $. CLÉ pour les champs de tableau [index] Obtenez, notez que l'index commence à 0
    "zhangsan" 136- 6666-6666 "basketball " "run"
    NULL

    3.2 Extraire la valeur du tableau jsonsite_user tablenomtags zhangsanlisiwangwu zhaoliu
    id
    1
    ["COMMON"] 2
    ["VIP"] 3
    ["VVIP","PLATINE" ] 4

    Extraire le premier tag de l'utilisateur :
    select 
    	json_extract(&#39;{"name":"zhangsan","tel_no":"136-6666-6666","hobbies":["basketball","run","sing"]}&#39;,"$.name") as name,
    	json_extract(&#39;{"name":"zhangsan","tel_no":"136-6666-6666","hobbies":["basketball","run","sing"]}&#39;,"$.tel_no") as tel_no,
    	json_extract(&#39;{"name":"zhangsan","tel_no":"136-6666-6666","hobbies":["basketball","run","sing"]}&#39;,"$.hobbies[0]") as hobby_1,
    	json_extract(&#39;{"name":"zhangsan","tel_no":"136-6666-6666","hobbies":["basketball","run","sing"]}&#39;,"$.hobbies[1]") as hobby_2,
    	json_extract(&#39;{"name":"zhangsan","tel_no":"136-6666-6666","hobbies":["basketball","run","sing"]}&#39;,"$.hobbies[2]") as hobby_3,
    	json_extract(&#39;{"name":"zhangsan","tel_no":"136-6666-6666","hobbies":["basketball","run","sing"]}&#39;,"$.hobbies[3]") as hobby_4;
    Résultat : nametags zhangsan
    id
    1
    "COMMUN" 1

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer