亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL中JSON字段數(shù)據(jù)類型詳解

 更新時間:2022年06月14日 11:40:13   作者:jacklin  
JSON我相信大家都已經(jīng)很熟悉了,但在 MySQL中,直至 5.7 版本中,才正式引入 JSON數(shù)據(jù)類型,下面這篇文章主要給大家介紹了關(guān)于MySQL中JSON字段數(shù)據(jù)類型的相關(guān)資料,需要的朋友可以參考下

前言

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

  • 自動驗證存儲在JSON列中的 JSON 文檔。無效的文檔會產(chǎn)生錯誤。
  • 優(yōu)化的存儲格式。存儲在JSON列中的 JSON 文檔將轉(zhuǎn)換為內(nèi)部格式,從而可以快速讀取文檔元素。
  • JSON列不能具有非NULL的默認(rèn)值。

創(chuàng)建JSON值

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

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

搜索JSON類型數(shù)據(jù)

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

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

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

    • [*]計算 JSON 數(shù)組中所有元素的值。
    • prefix**suffix計算所有以命名前綴開頭并以命名后綴結(jié)尾的路徑。
  • 文檔中不存在的路徑(評估為不存在的數(shù)據(jù))評估為NULL

在 JSON 和非 JSON 值之間轉(zhuǎn)換

下 table 概述了在 JSON 值和其他類型的值之間進(jìn)行轉(zhuǎn)換時 MySQL 遵循的規(guī)則:

table11.3 JSON 轉(zhuǎn)換規(guī)則

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

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

  • 標(biāo)量 JSON 值的排序使用與前面的討論相同的規(guī)則。
  • 對于升序排序,SQL NULL在所有 JSON 值(包括 JSON 空 Literals)之前進(jìn)行排序;對于降序排序,SQL NULL對所有 JSON 值(包括 JSON 空 Literals)進(jìn)行排序。
  • JSON 值的排序鍵受max_sort_length系統(tǒng)變量的值限制,因此僅在前max_sort_length個字節(jié)之后才不同的鍵比較相等。
  • 當(dāng)前不支持對非標(biāo)量值進(jìn)行排序,并且會出現(xiàn)警告。

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

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

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

JSON 值的匯總

對于 JSON 值的匯總,與其他數(shù)據(jù)類型一樣,將忽略 SQL NULL值。非NULL值將轉(zhuǎn)換為數(shù)字類型并進(jìn)行匯總,但MIN(),MAX()GROUP_CONCAT()除外。盡管可能會發(fā)生截斷和精度損失,但轉(zhuǎn)換為數(shù)字應(yīng)該為數(shù)字標(biāo)量的 JSON 值產(chǎn)生有意義的結(jié)果。轉(zhuǎn)換為其他 JSON 值的數(shù)量可能不會產(chǎn)生有意義的結(jié)果。

總結(jié)

到此這篇關(guān)于MySQL中JSON字段數(shù)據(jù)類型的文章就介紹到這了,更多相關(guān)MySQL JSON字段數(shù)據(jù)類型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Windows安裝MySQL 5.7.18 解壓版的教程

    Windows安裝MySQL 5.7.18 解壓版的教程

    這篇文章主要為大家詳細(xì)介紹了Windows安裝MySQL 5.7.18 解壓版的詳細(xì)教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • windows10安裝mysql5.7.17教程

    windows10安裝mysql5.7.17教程

    windows10安裝mysql5.7.17是這樣安裝的嗎?這篇文章主要為大家詳細(xì)介紹了win10下mysql5.7.17安裝配置方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 使用JDBC連接Mysql數(shù)據(jù)庫會出現(xiàn)的問題總結(jié)

    使用JDBC連接Mysql數(shù)據(jù)庫會出現(xiàn)的問題總結(jié)

    這篇文章主要給大家介紹了關(guān)于使用JDBC連接Mysql數(shù)據(jù)庫會出現(xiàn)的問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • 詳解mysql表數(shù)據(jù)壓縮

    詳解mysql表數(shù)據(jù)壓縮

    mysql進(jìn)行壓縮是借助于zlib庫,采用L777壓縮算法,這種算法在減少數(shù)據(jù)大小、CPU利用方面是成熟的、健壯的、高效的,這篇文章主要介紹了mysql表數(shù)據(jù)壓縮,需要的朋友可以參考下
    2022-01-01
  • Navicat 連接MySQL8.0.11出現(xiàn)2059錯誤

    Navicat 連接MySQL8.0.11出現(xiàn)2059錯誤

    這篇文章主要介紹了Navicat 連接MySQL8.0.11出現(xiàn)2059錯誤,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 簡單了解mysql mycat 中間件

    簡單了解mysql mycat 中間件

    這篇文章主要介紹了簡單了解mysql mycat 中間件,一個徹底開源的,面向企業(yè)應(yīng)用開發(fā)的大數(shù)據(jù)庫集群支持事務(wù)、ACID、可以替代MySQL的加強版數(shù)據(jù)庫,需要的朋友可以參考下
    2019-06-06
  • MySQL延遲關(guān)聯(lián)性能優(yōu)化方法

    MySQL延遲關(guān)聯(lián)性能優(yōu)化方法

    這篇文章主要介紹了MySQL延遲關(guān)聯(lián)性能優(yōu)化方法,本文講解了延遲關(guān)聯(lián)的背景、延遲關(guān)聯(lián)的分析、延遲關(guān)聯(lián)的解決等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • MySQL 函數(shù)索引的優(yōu)化方案

    MySQL 函數(shù)索引的優(yōu)化方案

    這篇文章主要介紹了MySQL 函數(shù)索引及優(yōu)化方案的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)MySQL,感興趣的朋友可以了解下
    2020-09-09
  • PHP MySQL的安裝與配置詳解

    PHP MySQL的安裝與配置詳解

    本篇文章給大家介紹php mysql的安裝與配置,首先給大家介紹安裝配置php,接著介紹配置mysql、安裝mysql,本文介紹的非常詳細(xì),需要的朋友可以參考下
    2015-10-10
  • mysql 5.7.13 winx64安裝配置方法圖文教程(win10)

    mysql 5.7.13 winx64安裝配置方法圖文教程(win10)

    這篇文章主要為大家分享了mysql 5.7.13 winx64安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01

最新評論