最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用MySQL JSON查詢篩選嵌套字段的值方式

 更新時間:2026年01月08日 10:42:35   作者:當年明月思古今  
本文介紹了如何在MySQL中查詢JSON字段中的特定數據,通過使用JSON_EXTRACT和JSON_UNQUOTE函數,可以方便地從嵌套的JSON結構中提取所需的信息,此外,還討論了性能優(yōu)化和數據規(guī)范化建議,以提高查詢效率

在日常開發(fā)中,隨著項目需求的不斷復雜化,許多表字段可能會存儲 JSON 格式的數據。

例如,我們有一張site_device表,其中有一個名為detail的字段,保存了設備的詳細信息。這些信息存儲為 JSON 數據,如下所示:

{
  "deviceType": "ammeter",
  "techParams": {
    "name": "202501241556",
    "deviceNo": "202501241556",
    "gatewayNo": "1829047495952388098",
    "ownership": "top",
    "dataReport": "1"
  },
  "deviceBrand": "HUAWEI",
  "deviceModel": "test",
  "modelConfigId": "1871021778273325058"
}

我們想要查詢出 ownershiptop 的設備。ownership 字段嵌套在 techParams 中,因此我們需要使用 MySQL 提供的 JSON 函數來實現(xiàn)查詢。

1. 理解 JSON 數據的層級結構

在這個例子中,JSON 的結構可以分解為:

  • deviceType:在 JSON 頂層。
  • techParams:是一個嵌套對象,里面包含了 ownership 等字段。
  • ownership:目標字段,位于 techParams 內。

我們需要從 detail 中提取出 techParams.ownership 的值。

2. 使用 MySQL JSON 查詢函數

MySQL 提供了一系列函數用于處理 JSON 數據:

  • JSON_EXTRACT(json_doc, path):從 JSON 中提取值。
  • JSON_UNQUOTE(json_val):去掉 JSON 提取值的引號,返回純文本。

對于本例來說,我們可以用以下語句來篩選出 ownershiptop 的記錄:

SELECT *
FROM site_device
WHERE JSON_UNQUOTE(JSON_EXTRACT(detail, '$.techParams.ownership')) = 'top';

語法解釋

JSON_EXTRACT(detail, '$.techParams.ownership')

提取 detailtechParams 對象內的 ownership 值。

JSON_UNQUOTE(...)

去掉 JSON 提取結果的引號,使其變?yōu)槠胀ㄗ址?/p>

WHERE ... = 'top'

篩選出 ownership 值等于 top 的記錄。

3. 示例數據和運行結果

假設 site_device 表中的數據如下:

iddetail
1{"deviceType": "ammeter", "techParams": {"ownership": "top", "dataReport": "1"}, "deviceBrand": "HUAWEI"}
2{"deviceType": "ammeter", "techParams": {"ownership": "bottom", "dataReport": "1"}, "deviceBrand": "HUAWEI"}
3{"deviceType": "ammeter", "techParams": {"ownership": "top", "dataReport": "1"}, "deviceBrand": "HUAWEI"}

運行查詢后,結果為:

iddetail
1{"deviceType": "ammeter", "techParams": {"ownership": "top", "dataReport": "1"}, "deviceBrand": "HUAWEI"}
3{"deviceType": "ammeter", "techParams": {"ownership": "top", "dataReport": "1"}, "deviceBrand": "HUAWEI"}

4. 注意事項

JSON 路徑表達式 $

JSON 路徑表達式 $ 表示 JSON 的根,嵌套字段用 . 分隔。例如:$.techParams.ownership。

性能優(yōu)化

如果數據量較大,可以通過為 JSON 字段創(chuàng)建虛擬列(Generated Column)并加索引來提升查詢性能。

ALTER TABLE site_device
ADD COLUMN ownership VARCHAR(50) GENERATED ALWAYS AS (JSON_UNQUOTE(JSON_EXTRACT(detail, '$.techParams.ownership'))) STORED,
ADD INDEX idx_ownership (ownership);

數據規(guī)范化

如果 JSON 數據中的字段經常被查詢,考慮將這些字段拆分到獨立的數據庫列中,以提高查詢效率。

5. 總結

MySQL 提供了強大的 JSON 查詢功能,使得我們可以方便地處理結構化的 JSON 數據。在本文中,我們通過 JSON_EXTRACTJSON_UNQUOTE 函數,成功篩選出了目標字段值為特定值的記錄。同時,結合性能優(yōu)化建議,可以讓你的 JSON 查詢更高效。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • MySQL尾部空格處理方法詳解

    MySQL尾部空格處理方法詳解

    這篇文章主要介紹了MySQL尾部空格處理方法詳解的相關資料,通過創(chuàng)建合適的索引來實現(xiàn)區(qū)分有尾部空格和沒有尾部空格的字符串,需要的朋友可以參考下
    2023-07-07
  • sql如何使用group by分組,同時查詢其它字段

    sql如何使用group by分組,同時查詢其它字段

    文章介紹了使用SQL的GROUP BY進行分組查詢時的一些規(guī)則和技巧,主要強調了在SELECT后面的字段要么是聚合函數的一部分,要么必須包含在GROUP BY子句中,此外,文章還討論了如何在GROUP BY時查詢其他字段,通過使用MAX或MIN函數來實現(xiàn)
    2024-12-12
  • mysql刪除無用用戶的方法實現(xiàn)

    mysql刪除無用用戶的方法實現(xiàn)

    本文主要介紹了mysql刪除無用用戶的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-03-03
  • MySQL自定義序列數的實現(xiàn)方式

    MySQL自定義序列數的實現(xiàn)方式

    這篇文章主要介紹了MySQL自定義序列數的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 使用java處理字符串公式運算的方法

    使用java處理字符串公式運算的方法

    本篇文章介紹了,使用java處理字符串公式運算的方法。需要的朋友參考下
    2013-04-04
  • MySQL之使用UNION和UNION ALL合并兩個或多個SELECT語句的結果集

    MySQL之使用UNION和UNION ALL合并兩個或多個SELECT語句的結果集

    這篇文章主要介紹了MySQL之使用UNION和UNION ALL合并兩個或多個SELECT語句的結果集,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • linux 安裝 mysql 8.0.19 詳細步驟及問題解決方法

    linux 安裝 mysql 8.0.19 詳細步驟及問題解決方法

    這篇文章主要介紹了linux 安裝 mysql 8.0.19 詳細步驟,本文給大家列出了常見問題及解決方法,通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • MySQL中如何進行SQL調優(yōu)舉例詳解

    MySQL中如何進行SQL調優(yōu)舉例詳解

    這篇文章主要介紹了SQL調優(yōu)的幾種方法,包括合理設計索引,避免SELECT*,避免在SQL中進行函數計算等操作,避免使用%LIKE,注意聯(lián)合索引需滿足最左匹配原則,不要對無索引字段進行排序操作,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-01-01
  • 淺談選擇mysql存儲引擎的標準

    淺談選擇mysql存儲引擎的標準

    本文介紹了如何選擇mysql存儲引擎,從存儲引擎的介紹、幾個常用引擎的特點三個方面進行講解,感興趣的小伙伴們可以參考一下
    2015-07-07
  • mysql 索引的基礎操作匯總(四)

    mysql 索引的基礎操作匯總(四)

    這篇文章主要為大家詳細介紹了mysql 索引的基礎操作匯總,涵蓋了創(chuàng)建和查看索引、刪除索引等操作,感興趣的小伙伴們可以參考一下
    2016-08-08

最新評論

霍山县| 稷山县| 邮箱| 临江市| 无为县| 浙江省| 石柱| 巴南区| 铁力市| 娱乐| 巨野县| 循化| 仁布县| 丹东市| 江北区| 沿河| 同江市| 神农架林区| 二连浩特市| 元氏县| 博爱县| 兴义市| 西和县| 南安市| 开阳县| 福泉市| 华阴市| 沧源| 河津市| 青田县| 星子县| 石城县| 济南市| 上杭县| 平阳县| 杨浦区| 丹阳市| 呼玛县| 扎兰屯市| 岳西县| 大洼县|