mysqljson格式java(json書寫格式)

本文目錄一覽:

mysql中的json數據類型

JSON數組包含一個由逗號分隔的值列表,並包含在 字元[和]字元中:

JSON對象包含一組由逗號分隔的鍵值對,並包含在字元{和 }字元中,JSON對象中的鍵必須是字元串:

在JSON數組元素和JSON對象鍵值中允許嵌套:

在MySQL中,JSON值被寫為字元串。MySQL解析在需要JSON值的上下文中使用的任何字元串,如果它作為JSON無效則會產生錯誤。

1.JSON_ARRAY 生成json數組

JSON_ARRAY(val1,val2,val3…)生成一個包含指定元素的json數組。

2.JSON_OBJECT 生成json對象

JSON_OBJECT(key1,val1,key2,val2…) 生成一個包含指定K-V對的json object。如果有key為NULL或參數個數為奇數,則拋錯。

3.JSON_QUOTE 加”號

JSON_QUOTE(json_val) — 將json_val用”號括起來。

2.插入記錄

創建一個表

插入含有json數組的記錄

插入含有json對象的記錄

路徑表達式對於提取JSON文檔的一部分或修改JSON文檔的函數很有用,以指定該文檔中的操作位置。例如,以下查詢從JSON文檔中提取具有 name 鍵的成員的值 :

路徑語法使用前導 $ 字元來表示正在考慮的JSON文檔,可選地後跟選擇器,它們連續指示文檔的更多特定部分:

如果路徑表達式中的未加引號的鍵名稱不合法,則必須引用命名鍵的路徑組件。讓我們 $ 參考這個值,且密鑰都包含空格,必須引用:

可以使用帶有 to 關鍵字的範圍來指定JSON數組的子集。

last關鍵字被支撐為最後一個元素的陣列中的索引的同義詞。表單的表達式可用於相對定址,也可用於範圍定義,如下所示: last – * N *

4.JSON_REMOVE()獲取JSON文檔和一個或多個指定要從文檔中刪除的值的路徑。返回值是原始文檔減去文檔中存在的路徑選擇的值

JSON值可以使用進行比較 =、、=、、=、、!=、=

JSON值尚不支持以下比較運算符和函數:BETWEEN、IN()、GREATEST()、LEAST()

以上列出的比較運算符和函數是通過將JSON值轉換為本機MySQL數值或字元串數據類型,使它們具有一致的非JSON標量類型。

JSON值的比較發生在兩個級別。第一級比較基於比較值的JSON類型。如果類型不同,則比較結果僅由哪種類型具有更高優先順序來確定。如果這兩個值具有相同的JSON類型,則使用特定於類型的規則進行第二級比較。

NULL-INTEGER, DOUBLE-STRING-OBJECT-ARRAY-BOOLEAN-DATE-TIME-DATETIME-OPAQUE-BIT-BLOB按此順序優先順序依次變大。

對於具有相同優先順序的JSON值,比較規則是特定於類型的:

1) BLOB、BIT、OPAQUE

比較兩個值 的第一個位元組,其中N是較短值中的位元組數。如果N兩個值的第一個位元組相同,則在較長值之前排序較短的值。

2) DATETIME

表示較早時間點的值在表示稍後時間點的值之前排序。如果兩個值最初 分別來自MySQL DATETIME 和 TIMESTAMP 類型,則它們相等,如果它們代表相同的時間點。

3)TIME

兩個時間值中較小的一個在較大的值之前排序。

4) DATE`

較早的日期是在最近的日期之前訂購的。

5) ARRAY

如果兩個JSON數組具有相同的長度並且數組中相應位置的值相等,則它們是相等的。如果數組不相等,則它們的順序由第一個位置中存在差異的元素確定。首先排序在該位置具有較小值的數組。如果較短數組的所有值都等於較長數組中的相應值,則首先排序較短的數組。

8) STRING

字元串在被比較的兩個字元串以詞法字典序排序 ,其中 N 是較短字元串的長度。如果 N 兩個字元串的第一個 位元組相同,則認為較短的字元串小於較長的字元串。

怎樣在java中查詢mysql得到如下的json格式的結果

Java中查詢出來一般不會是JSON,都是Object。你要把Object返回給前端或者客戶端的時候,用Jackson或者FastJSON把Object轉換成JSON格式。不知道你想在哪用JSON,所以只能這麼回答了。

mysql json類型的一些說明

以前最討厭英語了,然而沒有想到有一天居然要看英文文檔學習東西的時候,只想說MMP。下面就是一些學習的東西的記錄啦。

之前聽小夥伴說他們用的 pgsql ,pgsql 是如何如何牛逼,支持json。然後就去學習了下,但是公司用的是mysql,然後某個項目mysql用了5.7.20版本,這個版本支持json,所以就又學習了一波。吐槽完畢,下面就是正文了。

mysql5.7版本支持json,具體說的是5.7.8開始。這是需要注意的,然後可以的話大家還是看下官方文檔吧。

mysql 5.7 josn官方文檔地址

我這裡 json_content 就定義的是json類型,下面就是基本的操作,後續會寫一些json函數。

這算是一個比較複雜的json了,array裡面放的是一個數組,other放了另一個對象。下面我再插入幾條數據。

下面兩條的數據和第一條不一樣,是為了做一些說明用。lisi這條數據所有的欄位都有,但是數據和張三略有不同,而wangwu這條數據就有些欄位沒有。

說明下,我原來用的navicat發現查josn的時候是空 select * 的時候定義的json欄位會不顯示,然後換了新版本就好了。

結果如下:

上面兩條sql都是通過json對象中flag=0的數據,然後上面兩條sql是等價的。JSON_EXTRACT函數的語法為:JSON_EXTRACT(欄位名,『$.key』),這個函數可以在條件中使用,也可以在查詢的時候使用。如下:

結果如下:

嗯哼,沒錯 JSON_EXTRACT 這個函數是用來獲取json對象中指定key的值的。這是一個很常用的函數。

上面既然提到了time,那麼就用time來展示下吧。json對象中的時間,可以直接拿來比較,sql如下:

結果如下:

我的條件限定的是 2018-06-05 15:49:00 之後,獲取到了2條數據,是不是很神奇呢。這裡就要說明下了,這裡涉及到了json對象裡面對key對應的value進行比較的時候會有一個優先順序,mysql會按照這個優先順序來轉換,然後進行比較,這裡只貼一下優先順序情況,各個類型的比較的規則自己去文檔裡面看吧。

下面再介紹兩個查詢時候會用到的函數JSON_CONTAINS() 和 JSON_CONTAINS_PATH()。

下面就是具體的例子:

結果如下:

結果如下:

結果如下:

結果如下:

用法還是比較簡單的,嗯,可能有小夥伴會問我要查詢不滿足條件的數據呢?很簡單,比如上面的sql,修改成:

查詢暫時就介紹這麼多吧,後續可能會補充,現在介紹下修改。

JSON修改的函數比較多,這裡介紹一些應該會常用到的。

id=2的數據結果變為:

id=2的數據結果變為:

說明:假設這裡key已經存在,那麼本次已經存在的將不會被修改,同時可以添加多個。

id=2的數據結果變為:

id=2的數據結果變為:

說明下,如果指定的key不存在,那麼不存在的修改無效,存在的會被修改。

id=2的數據結果變為:

說明下,JSON_SET已經存在的會被修改,不存在的會被增加。

下面介紹一些其他函數。

暫時就寫這麼多吧,後續再進行補充。本人也是剛開始接觸mysql的json,如果有問題請指教~

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/250758.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-13 13:30
下一篇 2024-12-13 13:30

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • 如何在Java中拼接OBJ格式的文件並生成完整的圖像

    OBJ格式是一種用於表示3D對象的標準格式,通常由一組頂點、面和紋理映射坐標組成。在本文中,我們將討論如何將多個OBJ文件拼接在一起,生成一個完整的3D模型。 一、讀取OBJ文件 …

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29

發表回復

登錄後才能評論