1. 程式人生 > >MYSQL 5.7 新增 JSON 方面的系統函式支援

MYSQL 5.7 新增 JSON 方面的系統函式支援

select PageInfo->'$.utmSource', JSON_UNQUOTE(json_extract(PageInfo,'$.utmSource')) from BLP_WinningRecord where id =140455331


JSON_UNQUOTE:去除提取後多餘的引號

json_extract(jsonStr,'$.key') 等同於 jsonStr->'$.key'

JSON_UNQUOTE(json_extract(jsonStr,'$.key'))   等同於 jsonStr->>'$.key' (兩個箭頭)

Creating JSON Values

A JSON array contains a list of values separated by commas and enclosed within [ and ] characters:

["abc", 10, null, true, false]

A JSON object contains a set of key-value pairs separated by commas and enclosed within { and } characters:

{"k1": "value", "k2": 10}

As the examples illustrate, JSON arrays and objects can contain scalar values that are strings or numbers, the JSON null literal, or the JSON boolean true or false literals. Keys in JSON objects must be strings. Temporal (date, time, or datetime) scalar values are also permitted:

["12:18:29.000000", "2015-07-29", "2015-07-29 12:18:29.000000"]

Nesting is permitted within JSON array elements and JSON object key values:

[99, {"id": "HK500", "cost": 75.99}, ["hot", "cold"]]
{"k1": "value", "k2": [10, 20]}

You can also obtain JSON values from a number of functions supplied by MySQL for this purpose (see 

Section 12.16.2, “Functions That Create JSON Values”) as well as by casting values of other types to the JSON type using CAST(value AS JSON) (see Converting between JSON and non-JSON values). The next several paragraphs describe how MySQL handles JSON values provided as input.

In MySQL, JSON values are written as strings. MySQL parses any string used in a context that requires a JSON value, and produces an error if it is not valid as JSON. These contexts include inserting a value into a column that has the JSON data type and passing an argument to a function that expects a JSON value (usually shown asjson_doc or json_val in the documentation for MySQL JSON functions), as the following examples demonstrate:

  • Attempting to insert a value into a JSON column succeeds if the value is a valid JSON value, but fails if it is not:

    mysql> CREATE TABLE t1 (jdoc JSON);
    Query OK, 0 rows affected (0.20 sec)
    
    mysql> INSERT INTO t1 VALUES('{"key1": "value1", "key2": "value2"}');
    Query OK, 1 row affected (0.01 sec)
    
    mysql> INSERT INTO t1 VALUES('[1, 2,');
    ERROR 3140 (22032) at line 2: Invalid JSON text: 
    "Invalid value." at position 6 in value (or column) '[1, 2,'.

    Positions for at position N in such error messages are 0-based, but should be considered rough indications of where the problem in a value actually occurs.

  • The JSON_TYPE() function expects a JSON argument and attempts to parse it into a JSON value. It returns the value's JSON type if it is valid and produces an error otherwise:

    mysql> SELECT JSON_TYPE('["a", "b", 1]');
    +----------------------------+
    | JSON_TYPE('["a", "b", 1]') |
    +----------------------------+
    | ARRAY                      |
    +----------------------------+
    
    mysql> SELECT JSON_TYPE('"hello"');
    +----------------------+
    | JSON_TYPE('"hello"') |
    +----------------------+
    | STRING               |
    +----------------------+
    
    mysql> SELECT JSON_TYPE('hello')
                
               

    相關推薦

    MYSQL 5.7 新增 JSON 方面系統函式支援

    select PageInfo->'$.utmSource', JSON_UNQUOTE(json_extract(PageInfo,'$.utmSource')) from BLP_WinningRecord where id =140455331JSON_UNQUO

    MySQL 5.7新增sys.session表檢視系統執行狀態

    在MySQL 5.6以前,我們通過show processlist\G命令檢視系統中正在執行的所有程序,從5.7開始,我們又可以通過sys.session表來檢視系統正在執行的所有程序,而且該表中的記錄相對processlist比較完善:mysql> SELECT

    MySQL 5.7Json操作

    info result mysql 5.7 插入記錄 res 刪除 建表 arch 1.2 創建表CREATE TABLE t_json(id INT PRIMARY KEY, NAME VARCHAR(20) , info JSON); 插入記錄 INSERT INTO

    MySQL 5.7JSON特性

        Mysql 5.7之後開始支援Json格式的原生欄位型別,現將json新特性作如下整理,僅供參考。 JSON函式的完整列表: Mysql官方給出的json相關的函式,完整列表如下: 分類 函式 描述

    MySQL 5.7原生JSON格式支持

    html sum 很多 depend UNC 報錯 contain pen define 01. 在MySQL與PostgreSQL的對比中,PG的JSON格式支持優勢總是不斷被拿來比較。其實早先MariaDB也有對非結構化的數據進行存儲的方案,稱為dynamic colu

    MySQL 5.7 新增使用者與授權

    MySQL 5.7 的使用者表mysql.user表沒有password欄位,改成了authentication_string 下面說一下我的具體步驟: 一、建立使用者 建立使用者的命令: CREAT

    MySQL 5.7 InnoDB緩衝池NUMA功能支援——但是別高興的太早

    當前CPU都已是NUMA架構,相信除了歷史遺留系統,很少會有資料庫跑在SMP的CPU上了。NUMA架構帶來的優勢無言而語,CPU更快的記憶體訪問速度,但是帶來的問題也不言而喻,特別是對於資料庫的影響。MySQL之前“臭名昭著”的swap問題就是因為NUMA架構導致。大部分同學已經知道應對技巧,即在啟動檔案中

    MySQL 5.7新支持--------Json索引創建實戰

    mysql dba 索引 json 1. 背景  * 在MySQL 5.7.8中,MySQL支持由RFC 7159定義的本地JSON數據類型,它支持對JSON(JavaScript對象標記)文檔中的數據進行有效訪問.  * MySQL會對DML JSON數據自動驗證。無效的DML JSON數據操作

    CentOs6.5系統MySQL-5.7.19安裝

    mysql5.7安裝好長時間沒有更新了,今天給大家分享一波簡單的文檔,菜鳥的入門精神就是不斷的學習,不斷地找大神幫助!!!!在這裏今天給大家推薦一個博文地址:http://sumongodb.blog.51cto.com/好了!廢話少說,幹活走起來!!!!!!!!CentOs6.5下mysql5.7.19二進

    Linux下CenOS系統 安裝Mysql-5.7.19

    roo img .rpm undle -1 -c style root ima 1.輸入網址https://www.mysql.com/downloads/,進入downloads,選擇Community 2.選擇對應的版本和系統;

    Mysql 5.7.20 mysql innodb 系統表損壞帶來的問題

    sha use linux系統 type log tle blob b- 資料 早上上班後,mysql服務器遇到點小問題,在排查故障過程查看mysql錯誤日誌過程中發現有幾個innodb 表無法打開,使用desc查看有關表的表結構提示表不存在,show tables 可以查

    如何在RedHat 7.0系統中安裝mysql 5.7.22

    分享圖片 comm libs ant 進不去 cal 之前 str 一行 如何在RedHat 7.0系統中安裝mysql 5.7.22 今天給大家介紹一下如何安裝mysql5.7,在安裝之前,首先要查看的是,你的系統中有沒有已經安裝過的情況。鍵入rpm -qa|grep

    linux系統mysql-5.7 修改字符集

    show start res ini utf8 clas bubuko mysql安裝 class 起因:我在網上看修改mysql字符的文章時,都說配置/etc/mysql/my.cnf文件 然而我打開我上述的my.cnf文件時,發現裏面的內容跟別人的不一樣,我就覺得這個

    Windows10系統下,徹底刪除解除安裝MySQL,並安裝Mysql 5.7

    參考了好多篇文章,加上自己的實踐,總結如下 首先是解除安裝 1》停止MySQL服務 進入計算進管理,將MySQL服務停止。 2》解除安裝mysql server 控制面板\所有控制面板項\程式和功能,將mysql server解除安裝掉。 3》將MySQL安裝目錄下的M

    CentOS 7 系統安裝與遠端連線 MySQL 5.7

    本文是滴滴雲開源框架教程系列文章的一篇。 CentOS 7 版本將MySQL資料庫軟體從預設的程式列表中移除,那麼CentOS 7版本如何安裝MySQL呢,本文將指導大傢俱體的方法。 以滴滴雲DC2雲主機上的操作為例,首先切換賬戶許可權到root許可權,登入CentOS 7 系統的雲

    Linux系統下以RPM方式安裝mysql-5.7.9

    原文 很好但是有幾點錯誤,更正一下.   mysql-5.7.9 64位 RPM集合包在Linux系統中的安裝過程。因為我用的64位的CentOS7所以我下的是64位的集合包,如果你用的32位的Linux系統請下載32位的集合包。這裡我只講安裝,不解

    MySQL 5.7 新特性 JSON 的建立,插入,查詢,更新

    從 MySQL 5.7.8 開始,MySQL 支援原生的 JSON 資料型別。 建立 JSON 類似 varchar,設定 JSON 主要將欄位的 type 是 json, 不能設定長度,可以是 NULL  但不能有預設值。 mysql> CREATE

    linux系統centOS 7安裝 mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz

    #解除安裝系統自帶的Mariadb [[email protected] local]# rpm -qa|grep mariadb mariadb-libs-5.5.52-1.el7.x86_64 [[email protected] local]# rpm -e --nodep

    Linux系統MySQL 5.7和8.0 版本安裝指南

    一. 準備工作 1 刪除本地7中的mariadb: 檢視系統中是否已安裝 mariadb 服務: rpm -qa | grep mariadb 或 yum list installed | grep mariadb 如果已安裝則刪除 mariadb及其依賴的包: yum -y remove ma

    MySql 5.7新增使用者,新建資料庫,使用者授權,刪除使用者,修改密碼,匯入匯出sql檔案,設定字符集

    1、新建使用者  建立test使用者,密碼是1234。 mysql -u root -p CREATE USER “test”@”localhost” IDENTIFIED BY “1234”; #本地登入 CREATE USER “test”@”%” IDENTIFIE