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

Bagaimana untuk menggunakan fungsi json_extract dalam MySQL

WBOY
Lepaskan: 2023-06-02 20:16:09
ke hadapan
1974 orang telah melayarinya

    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: =, <, <=, >, >=, <>, != 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;
      Salin selepas log masuk
    Keputusan:

    <. 🎜>

    3.2 Ekstrak Nilai tatasusunan json
    nametel_nohobby_1hobby_2hobby_3hobby_4
    “zhangsan”136-6666-6666“basketball”“run”“sing”NULL

    jadual pengguna_tapak

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

    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!

    Label berkaitan:
    sumber:yisu.com
    Kenyataan Laman Web ini
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
    Tutorial Popular
    Lagi>
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan