<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Mysql使用函數json\_extract處理Json類型數據 # 1. 需求概述 業務開發中通常mysql數據庫中某個字段會需要存儲json格式字符串,查詢的時候有時json數據較大,每次全部取出再去解析查詢效率較低,也比較麻煩,則Mysql5.7版本提供提供函數json\_extract,可以通過key查詢value值,比較方便。 2\. json\_extract簡介 2.1 函數簡介 ****Mysql5.7****版本以后新增的功能,Mysql提供了一個原生的Json類型,Json值將不再以字符串的形式存儲,而是采用一種允許快速讀取文本元素(document elements)的內部二進制(internal binary)格式。 在Json列插入或者更新的時候將會自動驗證Json文本,未通過驗證的文本將產生一個錯誤信息。 Json文本采用標準的創建方式,可以使用大多數的比較操作符進行比較操作,例如:=, <, <=, >, >=, <>, != 和 <=>。 2.2 使用方式 數據存儲的數據是json字符串(類型是vachar)。 想要查詢出來json中某個字段的值,用到方法是:JSON\_EXTRACT()。 語法: JSON\_EXTRACT(json\_doc, path\[, path\] …) 實際用法: 如果json字符串不是數組,則直接使用$.字段名即可 ## 2.3 注意事項 ## JSON\_EXTRACT性能驗證 , 通過查看執行計劃,驗證全部都是全表掃描。 ## 使用場景:數據量不大json字符串較大則可以采用,數據量較大不建議使用。 ``` <pre class="calibre13">``` <span class="token">--</span> 創建測試表 <span class="token5">CREATE</span> <span class="token5">TABLE</span> <span><span class="token4">`tab_json`</span></span> <span class="token1">(</span> <span><span class="token4">`id`</span></span> <span class="token3">bigint</span><span class="token1">(</span><span class="token5">20</span><span class="token1">)</span> <span class="token5">NOT</span> <span class="token5">NULL</span> <span class="token5">AUTO_INCREMENT</span> <span class="token5">COMMENT</span> <span class="token4">'主鍵id'</span><span class="token1">,</span> <span><span class="token4">`data`</span></span> json <span class="token5">DEFAULT</span> <span class="token5">NULL</span> <span class="token5">COMMENT</span> <span class="token4">'json字符串'</span><span class="token1">,</span> <span class="token5">PRIMARY</span> <span class="token5">KEY</span> <span class="token1">(</span><span><span class="token4">`id`</span></span><span class="token1">)</span> <span class="token1">)</span> <span class="token5">ENGINE</span><span class="token">=</span>InnoDB <span class="token5">DEFAULT</span> <span class="token5">CHARSET</span><span class="token">=</span>utf8<span class="token1">;</span> <span class="token">--</span> 新增數據 <span class="token">--</span> <span class="token1">{</span><span class="token4">"Tel"</span><span class="token1">:</span> <span class="token4">"132223232444"</span><span class="token1">,</span> <span class="token4">"name"</span><span class="token1">:</span> <span class="token4">"david"</span><span class="token1">,</span> <span class="token4">"address"</span><span class="token1">:</span> <span class="token4">"Beijing"</span><span class="token1">}</span> <span class="token">--</span> <span class="token1">{</span><span class="token4">"Tel"</span><span class="token1">:</span> <span class="token4">"13390989765"</span><span class="token1">,</span> <span class="token4">"name"</span><span class="token1">:</span> <span class="token4">"Mike"</span><span class="token1">,</span> <span class="token4">"address"</span><span class="token1">:</span> <span class="token4">"Guangzhou"</span><span class="token1">}</span> <span class="token5">INSERT</span> <span class="token5">INTO</span> <span><span class="token4">`testdb`</span></span><span class="token1">.</span><span><span class="token4">`tab_json`</span></span><span class="token1">(</span><span><span class="token4">`id`</span></span><span class="token1">,</span> <span><span class="token4">`data`</span></span><span class="token1">)</span> <span class="token5">VALUES</span> <span class="token1">(</span><span class="token5">1</span><span class="token1">,</span> <span class="token4">'{\"Tel\": \"132223232444\", \"name\": \"david\", \"address\": \"Beijing\"}'</span><span class="token1">)</span><span class="token1">;</span> <span class="token5">INSERT</span> <span class="token5">INTO</span> <span><span class="token4">`testdb`</span></span><span class="token1">.</span><span><span class="token4">`tab_json`</span></span><span class="token1">(</span><span><span class="token4">`id`</span></span><span class="token1">,</span> <span><span class="token4">`data`</span></span><span class="token1">)</span> <span class="token5">VALUES</span> <span class="token1">(</span><span class="token5">2</span><span class="token1">,</span> <span class="token4">'{\"Tel\": \"13390989765\", \"name\": \"Mike\", \"address\": \"Guangzhou\"}'</span><span class="token1">)</span><span class="token1">;</span> <span class="token5">INSERT</span> <span class="token5">INTO</span> <span><span class="token4">`testdb`</span></span><span class="token1">.</span><span><span class="token4">`tab_json`</span></span><span class="token1">(</span><span><span class="token4">`id`</span></span><span class="token1">,</span> <span><span class="token4">`data`</span></span><span class="token1">)</span> <span class="token5">VALUES</span> <span class="token1">(</span><span class="token5">3</span><span class="token1">,</span> <span class="token4">'{"success": true,"code": "0","message": "","data": {"name": "jerry","age": "18","sex": "男"}}'</span><span class="token1">)</span><span class="token1">;</span> <span class="token5">INSERT</span> <span class="token5">INTO</span> <span><span class="token4">`testdb`</span></span><span class="token1">.</span><span><span class="token4">`tab_json`</span></span><span class="token1">(</span><span><span class="token4">`id`</span></span><span class="token1">,</span> <span><span class="token4">`data`</span></span><span class="token1">)</span> <span class="token5">VALUES</span> <span class="token1">(</span><span class="token5">4</span><span class="token1">,</span> <span class="token4">'{"success": true,"code": "1","message": "","data": {"name": "tome","age": "30","sex": "女"}}'</span><span class="token1">)</span><span class="token1">;</span> <span class="token">--</span> 查詢 select <span class="token">*</span> <span class="token2">from</span> tab_json<span class="token1">;</span> <span class="token">--</span> json_extract select <span class="token3">json_extract</span><span class="token1">(</span><span class="token4">'{"name":"Zhaim","tel":"13240133388"}'</span><span class="token1">,</span><span class="token4">"$.tel"</span><span class="token1">)</span><span class="token1">;</span> select <span class="token3">json_extract</span><span class="token1">(</span><span class="token4">'{"name":"Zhaim","tel":"13240133388"}'</span><span class="token1">,</span><span class="token4">"$.name"</span><span class="token1">)</span><span class="token1">;</span> <span class="token">--</span> 對tab_json表使用json_extract函數 select <span class="token3">json_extract</span><span class="token1">(</span>data<span class="token1">,</span><span class="token4">'$.name'</span><span class="token1">)</span> <span class="token2">from</span> tab_json<span class="token1">;</span> #如果查詢沒有的key<span class="token1">,</span>那么是可以查詢<span class="token1">,</span>不過返回的是<span class="token5">NULL</span><span class="token1">.</span> select <span class="token3">json_extract</span><span class="token1">(</span>data<span class="token1">,</span><span class="token4">'$.name'</span><span class="token1">)</span><span class="token1">,</span><span class="token3">json_extract</span><span class="token1">(</span>data<span class="token1">,</span><span class="token4">'$.Tel'</span><span class="token1">)</span> <span class="token2">from</span> tab_json<span class="token1">;</span> select <span class="token3">json_extract</span><span class="token1">(</span>data<span class="token1">,</span><span class="token4">'$.name'</span><span class="token1">)</span><span class="token1">,</span><span class="token3">json_extract</span><span class="token1">(</span>data<span class="token1">,</span><span class="token4">'$.tel'</span><span class="token1">)</span> <span class="token2">from</span> tab_json<span class="token1">;</span> select <span class="token3">json_extract</span><span class="token1">(</span>data<span class="token1">,</span><span class="token4">'$.name'</span><span class="token1">)</span><span class="token1">,</span><span class="token3">json_extract</span><span class="token1">(</span>data<span class="token1">,</span><span class="token4">'$.address'</span><span class="token1">)</span> <span class="token2">from</span> tab_json<span class="token1">;</span> <span class="token">--</span> 條件查詢 select <span class="token3">json_extract</span><span class="token1">(</span>data<span class="token1">,</span><span class="token4">'$.name'</span><span class="token1">)</span><span class="token1">,</span><span class="token3">json_extract</span><span class="token1">(</span>data<span class="token1">,</span><span class="token4">'$.Tel'</span><span class="token1">)</span> <span class="token2">from</span> tab_json where <span class="token3">json_extract</span><span class="token1">(</span>data<span class="token1">,</span><span class="token4">'$.name'</span><span class="token1">)</span> <span class="token">=</span> <span class="token4">'Mike'</span><span class="token1">;</span> <span class="token">--</span> 嵌套json查詢 select <span class="token">*</span> <span class="token2">from</span> tab_json where <span class="token3">json_extract</span><span class="token1">(</span>data<span class="token1">,</span><span class="token4">'$.success'</span><span class="token1">)</span> <span class="token">=</span> <span class="token5">true</span><span class="token1">;</span> select <span class="token3">json_extract</span><span class="token1">(</span>data<span class="token1">,</span><span class="token4">'$.data'</span><span class="token1">)</span> <span class="token2">from</span> tab_json where <span class="token3">json_extract</span><span class="token1">(</span>data<span class="token1">,</span><span class="token4">'$.success'</span><span class="token1">)</span> <span class="token">=</span> <span class="token5">true</span><span class="token1">;</span> <span class="token">--</span> 查詢data對應json中key為name的值 select <span class="token3">json_extract</span><span class="token1">(</span> <span class="token3">json_extract</span><span class="token1">(</span>data<span class="token1">,</span><span class="token4">'$.data'</span><span class="token1">)</span><span class="token1">,</span><span class="token4">'$.name'</span><span class="token1">)</span> <span class="token2">from</span> tab_json where <span class="token3">json_extract</span><span class="token1">(</span>data<span class="token1">,</span><span class="token4">'$.code'</span><span class="token1">)</span> <span class="token">=</span> <span class="token4">"1"</span><span class="token1">;</span> select <span class="token3">json_extract</span><span class="token1">(</span> <span class="token3">json_extract</span><span class="token1">(</span>data<span class="token1">,</span><span class="token4">'$.data'</span><span class="token1">)</span><span class="token1">,</span><span class="token4">'$.name'</span><span class="token1">)</span><span class="token1">,</span><span class="token3">json_extract</span><span class="token1">(</span> <span class="token3">json_extract</span><span class="token1">(</span>data<span class="token1">,</span><span class="token4">'$.data'</span><span class="token1">)</span><span class="token1">,</span><span class="token4">'$.age'</span><span class="token1">)</span> <span class="token2">from</span> tab_json where <span class="token3">json_extract</span><span class="token1">(</span>data<span class="token1">,</span><span class="token4">'$.code'</span><span class="token1">)</span> <span class="token">=</span> <span class="token4">"0"</span><span class="token1">;</span> <span class="token">--</span> 性能驗證 <span class="token1">,</span> 通過驗證全部都是全表掃描,使用場景:數據量不大json字符串較大則可以采用,數據量較大不建議使用。 explain select <span class="token">*</span> <span class="token2">from</span> tab_json where <span class="token3">json_extract</span><span class="token1">(</span>data<span class="token1">,</span><span class="token4">'$.success'</span><span class="token1">)</span> <span class="token">=</span> <span class="token5">true</span><span class="token1">;</span> explain select <span class="token3">json_extract</span><span class="token1">(</span>data<span class="token1">,</span><span class="token4">'$.data'</span><span class="token1">)</span> <span class="token2">from</span> tab_json where <span class="token3">json_extract</span><span class="token1">(</span>data<span class="token1">,</span><span class="token4">'$.success'</span><span class="token1">)</span> <span class="token">=</span> <span class="token5">true</span><span class="token1">;</span> <span class="token">--</span> 查詢data對應json中key為name的值 explain select <span class="token3">json_extract</span><span class="token1">(</span> <span class="token3">json_extract</span><span class="token1">(</span>data<span class="token1">,</span><span class="token4">'$.data'</span><span class="token1">)</span><span class="token1">,</span><span class="token4">'$.name'</span><span class="token1">)</span> <span class="token2">from</span> tab_json where <span class="token3">json_extract</span><span class="token1">(</span>data<span class="token1">,</span><span class="token4">'$.code'</span><span class="token1">)</span> <span class="token">=</span> <span class="token4">"1"</span><span class="token1">;</span> explain select <span class="token3">json_extract</span><span class="token1">(</span> <span class="token3">json_extract</span><span class="token1">(</span>data<span class="token1">,</span><span class="token4">'$.data'</span><span class="token1">)</span><span class="token1">,</span><span class="token4">'$.name'</span><span class="token1">)</span><span class="token1">,</span><span class="token3">json_extract</span><span class="token1">(</span> <span class="token3">json_extract</span><span class="token1">(</span>data<span class="token1">,</span><span class="token4">'$.data'</span><span class="token1">)</span><span class="token1">,</span><span class="token4">'$.age'</span><span class="token1">)</span> <span class="token2">from</span> tab_json where <span class="token3">json_extract</span><span class="token1">(</span>data<span class="token1">,</span><span class="token4">'$.code'</span><span class="token1">)</span> <span class="token">=</span> <span class="token4">"0"</span><span class="token1">;</span> ``` ``` ![](https://img.kancloud.cn/87/d1/87d18577caa7f530786197cb26d9e4c7_799x374.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看