91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL中JSON字段數據類型怎么用

發布時間:2022-06-14 15:03:07 來源:億速云 閱讀:302 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“MySQL中JSON字段數據類型怎么用”,內容詳細,步驟清晰,細節處理妥當,希望這篇“MySQL中JSON字段數據類型怎么用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

    前言

    JSON 類型是從 MySQL 5.7 版本開始支持的功能,MySQL 支持由RFC 7159定義的本機JSON數據類型,該類型可有效訪問 JSON(JavaScript 對象 table 示法)文檔中的數據。與將 JSON 格式的字符串存儲在字符串列中相比,JSON數據類型具有以下優點:

    • 自動驗證存儲在JSON列中的 JSON 文檔。無效的文檔會產生錯誤。

    • 優化的存儲格式。存儲在JSON列中的 JSON 文檔將轉換為內部格式,從而可以快速讀取文檔元素。

    • JSON列不能具有非NULL的默認值。

    創建JSON值

    JSON類型字段可以是JSONObject,也可以是JSONArray類型,在 MySQL 中,JSON 值被編寫為字符串。 MySQL 會解析在需要 JSON 值的上下文中使用的任何字符串,如果該字符串作為 JSON 無效,則會產生錯誤。這些上下文包括將值插入具有JSON數據類型的列中,以及將參數傳遞給需要 JSON 值的函數(在 MySQL JSON 函數的文檔中通常顯示為* json_doc 或 json_val *)。

    • JSON_TYPE()函數需要一個 JSON 參數,并嘗試將其解析為 JSON 值。如果有效,則返回值的 JSON 類型,否則返回錯誤:

    MySQL中JSON字段數據類型怎么用

    搜索JSON類型數據

    SELECT * FROM sd_school_faq WHERE faq_similar_question -> '$[*].*' LIKE '%課表在哪里?%';

    MySQL中JSON字段數據類型怎么用

    • 路徑可以包含***通配符:

    • .[*]求值為 JSON 對象中所有成員的值。

      • [*]計算 JSON 數組中所有元素的值。

      • prefix**suffix計算所有以命名前綴開頭并以命名后綴結尾的路徑。

    • 文檔中不存在的路徑(評估為不存在的數據)評估為NULL

    在 JSON 和非 JSON 值之間轉換

    下 table 概述了在 JSON 值和其他類型的值之間進行轉換時 MySQL 遵循的規則:

    table11.3 JSON 轉換規則

    other typeCAST(其他類型的 AS JSON)CAST(JSON AS 其他類型)
    JSONNo changeNo change
    utf8 字符類型(utf8mb4utf8ascii)該字符串將解析為 JSON 值。JSON 值被序列化為utf8mb4字符串。
    其他字符類型其他字符編碼將隱式轉換為utf8mb4,并按 utf8 字符類型所述進行處理。JSON 值被序列化為utf8mb4字符串,然后轉換為其他字符編碼。結果可能沒有意義。
    NULL結果為 JSON 類型的NULL值。Not applicable.
    Geometry types通過調用ST_AsGeoJSON()將幾何值轉換為 JSON 文檔。非法操作。解決方法:將CAST(json_val AS CHAR)的結果傳遞給ST_GeomFromGeoJSON()
    所有其他類型結果是由單個標量值組成的 JSON 文檔。如果 JSON 文檔由目標類型的單個標量值組成,并且該標量值可以轉換為目標類型,則成功。否則,返回NULL并產生警告。

    JSON 值的ORDER BYGROUP BY按照以下原則工作:

    • 標量 JSON 值的排序使用與前面的討論相同的規則。

    • 對于升序排序,SQL NULL在所有 JSON 值(包括 JSON 空 Literals)之前進行排序;對于降序排序,SQL NULL對所有 JSON 值(包括 JSON 空 Literals)進行排序。

    • JSON 值的排序鍵受max_sort_length系統變量的值限制,因此僅在前max_sort_length個字節之后才不同的鍵比較相等。

    • 當前不支持對非標量值進行排序,并且會出現警告。

    對于排序,將 JSON 標量轉換為其他一些本機 MySQL 類型可能是有益的。例如,如果名為jdoc的列包含 JSON 對象,其成員由id鍵和一個非負值組成,則使用此 table 達式按id值進行排序:

    ORDER BY CAST(JSON_EXTRACT(jdoc, '$.id') AS UNSIGNED)

    如果碰巧有一個生成的列被定義為使用與ORDER BY中相同的 table 達式,則 MySQL 優化器將識別出該列,并考慮將索引用于查詢執行計劃。

    JSON 值的匯總

    對于 JSON 值的匯總,與其他數據類型一樣,將忽略 SQL NULL值。非NULL值將轉換為數字類型并進行匯總,但MIN()MAX()GROUP_CONCAT()除外。盡管可能會發生截斷和精度損失,但轉換為數字應該為數字標量的 JSON 值產生有意義的結果。轉換為其他 JSON 值的數量可能不會產生有意義的結果。

    讀到這里,這篇“MySQL中JSON字段數據類型怎么用”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    东阿县| 平阳县| 盖州市| 新泰市| 塔城市| 图木舒克市| 开原市| 额尔古纳市| 南汇区| 红桥区| 蓝田县| 嘉祥县| 喀喇沁旗| 哈巴河县| 衡阳县| 枣强县| 蕲春县| 宁晋县| 黄平县| 偏关县| 桃源县| 保定市| 虎林市| 资兴市| 榕江县| 府谷县| 长治县| 如皋市| 东平县| 江北区| 紫阳县| 读书| 安徽省| 黄浦区| 金华市| 黄骅市| 建平县| 田阳县| 平阴县| 吕梁市| 连平县|