Rumah >pangkalan data >tutorial mysql >Bagaimana untuk menggunakan fungsi json_extract dalam MySQL

Bagaimana untuk menggunakan fungsi json_extract dalam MySQL

WBOY
WBOYke hadapan
2023-06-02 20:16:091941semak imbas

    1. Perihalan senario penggunaan json_extract

    Dalam pembangunan perniagaan harian, biasanya medan dalam pangkalan data mysql perlu menyimpan rentetan format json apabila membuat pertanyaan Kadangkala data json adalah besar, dan tidak cekap dan menyusahkan untuk mendapatkan semuanya dan kemudian menghuraikan dan menanyakannya setiap kali

    Mujurlah, Mysql5.7 dan versi yang lebih baru menyediakan fungsi json_extract, yang boleh menanyakan nilai melalui kunci. ( Jika ia adalah jenis tatasusunan json, anda boleh mendapatkan nilai kedudukan yang sepadan melalui subskrip), yang sangat mudah.

    2. Pengenalan fungsi json_extract MySQL

    2.1 Pengenalan fungsi

    Fungsi baharu selepas versi Mysql5.7, Mysql menyediakan jenis Json asli, nilai Json tidak akan menjadi. kemudian disimpan sebagai rentetan, tetapi dalam format binari dalaman yang membolehkan pembacaan pantas elemen dokumen. Teks Json akan disahkan secara automatik apabila memasukkan atau mengemas kini lajur Json Teks yang gagal pengesahan akan menghasilkan mesej ralat. Teks Json dicipta dengan cara standard dan kebanyakan operator perbandingan boleh digunakan untuk operasi perbandingan, seperti: =, 91eef5681cad6f0cc96f9adeb2931b45, >=, a8093152e673feb7aba1828c43532094, != dan <= > ;.

    2.2 Penggunaan

    Data yang disimpan ialah rentetan json (jenis ialah vachar).

    Jika anda ingin menanyakan nilai medan tertentu dalam json, kaedah yang digunakan ialah: JSON_EXTRACT().

    Sintaks:

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

    Petua penggunaan:

    • Jika rentetan json bukan tatasusunan, gunakan  $.字段名

    • Jika rentetan json ialah tatasusunan [Array], gunakan $[对应的索引ID]

    2.3 Nota

    Pengesahan prestasi JSON_EXTRACT, dengan melihat pelan pelaksanaan, sahkan bahawa semuanya adalah imbasan jadual penuh.

    Senario penggunaan: Jika jumlah data tidak besar, ia boleh digunakan jika rentetan json besar Walau bagaimanapun, jika jumlah data adalah besar, ia tidak disyorkan.

    3. Pengesahan data

    3.1 Mengekstrak nilai daripada json biasa

    Arahan:

    • Gunakan

      untuk mendapatkan medan biasa $.KEY

    • Medan tatasusunan diperoleh menggunakan

      Perhatikan bahawa indeks bermula dari 0$.KEY[index]

    • Dalam penggunaan sebenar, json berikut. rentetan hanya perlu diganti dengan yang sepadan Medan jadual adalah mencukupi, tetapi sila ambil perhatian bahawa operasi penukaran ETL seperti nulling dan penggantian json diperlukan

    • 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;
    Keputusan:

    <.>

    3.2 Ekstrak Nilai tatasusunan json
    name tel_no hobby_1 hobby_2 hobby_3 hobby_4
    “zhangsan” 136-6666-6666 “basketball” “run” “sing” NULL

    jadual pengguna_tapak

    Ekstrak teg pertama pengguna:
    id name tags
    1 zhangsan [“COMMON”]
    2 lisi [“VIP”]
    3 wangwu [“VVIP”,“PLATINUM”]
    4 zhaoliu  
    select 
    	id,
    	name,
    	tags, 
    	json_extract(if(LENGTH(tags)>0,tags, &#39;[]&#39;),"$[0]")  # 如果tags无数据,赋值为空数组
    from site_user;

    Keputusan:

    Atas ialah kandungan terperinci Bagaimana untuk menggunakan fungsi json_extract dalam MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam