mysql數據庫json類型數據,sql server 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 兩個字符串的第一個 位元組相同,則認為較短的字符串小於較長的字符串。

使用Mysql將json格式的數據怎麼用sql拆分

1、首先,創建Mysql臨時表CREATETEMPORARYTABLEtemp。

2、其次,插入臨時表數據sql。

3、然後,取臨時表插入json格式的數據表中。

4、最後,點擊合併,即可拆分完成。

mysql使用什麼類型存json數據?

JSON (JavaScriptObject Notation) 是一種輕量級的數據交換格式,主要用於傳送數據。JSON採用了獨立於語言的文本格式,類似XML,但是比XML簡單,易讀並且易編寫。對機器來說易於解析和生成,並且會減少網絡帶寬的傳輸。由於JSON格式可以解耦javascript客戶端應用與Restful服務器端的方法調用,因而在互聯網應用中被大量使用。

JSON的格式非常簡單:名稱/鍵值。之前MySQL版本裏面要實現這樣的存儲,要麼用VARCHAR要麼用TEXT大文本。 MySQL5.7發佈後,專門設計了JSON數據類型以及關於這種類型的檢索以及其他函數解析。我們先看看MySQL老版本的JSON存取。

示例表結構:

CREATE TABLE json_test(

id INT,

person_desc TEXT

)ENGINE INNODB;

我們來插入一條記錄:

INSERT INTO json_test VALUES (1,'{

“programmers”: [{

“firstName”: “Brett”,

“lastName”: “McLaughlin”,

“email”: “aaaa”

}, {

“firstName”: “Jason”,

“lastName”: “Hunter”,

“email”: “bbbb”

}, {

“firstName”: “Elliotte”,

“lastName”: “Harold”,

“email”: “cccc”

}],

“authors”: [{

“firstName”: “Isaac”,

“lastName”: “Asimov”,

“genre”: “sciencefiction”

}, {

“firstName”: “Tad”,

“lastName”: “Williams”,

“genre”:”fantasy”

}, {

“firstName”: “Frank”,

“lastName”: “Peretti”,

“genre”: “christianfiction”

}],

“musicians”: [{

“firstName”: “Eric”,

“lastName”: “Clapton”,

“instrument”: “guitar”

}, {

“firstName”: “Sergei”,

“lastName”: “Rachmaninoff”,

“instrument”: “piano”

}]

}’);

那一般我們遇到這樣來存儲JSON格式的話,只能把這條記錄取出來交個應用程序,由應用程

來解析。如此一來,JSON又和特定的應用程序耦合在一起,其便利性的優勢大打折扣。

現在到了MySQL5.7,可以支持對JSON進行屬性的解析,我們重新修改下表結構:

ALTER TABLE json_test MODIFY person_desc json;

先看看插入的這行JSON數據有哪些KEY:

mysql SELECT id,json_keys(person_desc) as “keys” FROM json_test\G

*************************** 1. row***************************

id: 1

keys: [“authors”, “musicians”,”programmers”]

1 row in set (0.00 sec)

我們可以看到,裏面有三個KEY,分別為authors,musicians,programmers。那現在找一

KEY把對應的值拿出來:

mysql SELECT json_extract(AUTHORS,’$.lastName[0]’) AS ‘name’, AUTHORS FROM

– (

– SELECT id,json_extract(person_desc,’$.authors[0][0]’) AS “authors” FROM json_test

-UNION ALL

– SELECT id,json_extract(person_desc,’$.authors[1][0]’) AS “authors” FROM json_test

– UNION ALL

– SELECT id,json_extract(person_desc,’$.authors[2][0]’) AS “authors” FROM json_test

– ) AS T1

– ORDER BY NAME DESC\G

*************************** 1. row***************************

name:”Williams”

AUTHORS: {“genre”: “fantasy”,”lastName”: “Williams”, “firstName”:”Tad”}

*************************** 2. row***************************

name:”Peretti”

AUTHORS: {“genre”:”christianfiction”, “lastName”: “Peretti”,”firstName”:

“Frank”}*************************** 3. row***************************

name:”Asimov”

AUTHORS: {“genre”: “sciencefiction”,”lastName”: “Asimov”, “firstName”:”Isaac”}

3 rows in set (0.00 sec)

現在來把詳細的值羅列出來:

mysql SELECT

-json_extract(AUTHORS,’$.firstName[0]’) AS “firstname”,

– json_extract(AUTHORS,’$.lastName[0]’)AS “lastname”,

– json_extract(AUTHORS,’$.genre[0]’) AS”genre”

– FROM

– (

– SELECT id,json_extract(person_desc,’$.authors[0]’)AS “authors” FROM json

_test

– ) AS T\G

*************************** 1. row***************************

firstname: “Isaac”

lastname:”Asimov”

genre:”sciencefiction”

1 row in set (0.00 sec)

我們進一步來演示把authors 這個KEY對應的所有對象刪掉。

mysql UPDATE json_test

– SET person_desc =json_remove(person_desc,’$.authors’)\G

Query OK, 1 row affected (0.01 sec)

Rows matched: 1 Changed: 1  Warnings: 0

查找下對應的KEY,發現已經被刪除掉了。

mysql SELECT json_contains_path(person_desc,’all’,’$.authors’)as authors_exists FROM

json_test\G

*************************** 1. row***************************

authors_exists: 0

1 row in set (0.00 sec)

總結下,雖然MySQL5.7開始支持JSON數據類型,但是我建議如果要使用的話,最好是把這的值取出來,然後在應用程序段來計算。畢竟數據庫是用來處理結構化數據的,大量的未預先定義schema的json解析,會拖累數據庫的性能。

mysql數據庫中某個字段存的是json數據,如何對json數據中的數據進行操作?

這個可以吧json格式的字符串解析成數組json_decode()函數,變成數組以後就可以方便操作了,可以刪除數組中的任意一項,也可以增加一項比如:array_push($data,[‘sort’=3,’catentryId’=10003]),再變成json格式的存入數據庫。方法有多種,這裡簡單的示例下

原創文章,作者:V5Y4Y,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/128239.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
V5Y4Y的頭像V5Y4Y
上一篇 2024-10-03 23:24
下一篇 2024-10-03 23:24

相關推薦

  • Python讀取CSV數據畫散點圖

    本文將從以下方面詳細闡述Python讀取CSV文件並畫出散點圖的方法: 一、CSV文件介紹 CSV(Comma-Separated Values)即逗號分隔值,是一種存儲表格數據的…

    編程 2025-04-29
  • int類型變量的細節與注意事項

    本文將從 int 類型變量的定義、聲明、初始化、範圍、運算和類型轉換等方面,對 int 類型變量進行詳細闡述和講解,幫助讀者更好地掌握和應用 int 變量。 一、定義與聲明 int…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變量時顯示的指定變量類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Python返回數組:一次性搞定多種數據類型

    Python是一種多用途的高級編程語言,具有高效性和易讀性的特點,因此被廣泛應用於數據科學、機器學習、Web開發、遊戲開發等各個領域。其中,Python返回數組也是一項非常強大的功…

    編程 2025-04-29
  • 如何用Python統計列表中各數據的方差和標準差

    本文將從多個方面闡述如何使用Python統計列表中各數據的方差和標準差, 並給出詳細的代碼示例。 一、什麼是方差和標準差 方差是衡量數據變異程度的統計指標,它是每個數據值和該數據值…

    編程 2025-04-29
  • openeuler安裝數據庫方案

    本文將介紹在openeuler操作系統中安裝數據庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟件源 sudo…

    編程 2025-04-29
  • Python多線程讀取數據

    本文將詳細介紹多線程讀取數據在Python中的實現方法以及相關知識點。 一、線程和多線程 線程是操作系統調度的最小單位。單線程程序只有一個線程,按照程序從上到下的順序逐行執行。而多…

    編程 2025-04-29
  • Python兩張表數據匹配

    本篇文章將詳細闡述如何使用Python將兩張表格中的數據匹配。以下是具體的解決方法。 一、數據匹配的概念 在生活和工作中,我們常常需要對多組數據進行比對和匹配。在數據量較小的情況下…

    編程 2025-04-29

發表回復

登錄後才能評論