JSON_UNQUOTE

JSON_UNQUOTE函数用于去掉JSON数据中的引号。

命令格式

STRING JSON_UNQUOTE(JSON <json>)

-- 标准示例。
-- 返回123。
SELECT JSON_UNQUOTE(JSON "123");

参数说明

json:必填。待去除引号的JSON数据。JSON类型。

注意:在json数据中包含的如下转义序列将被识别,对于所有其他转义序列,会导致JSON解析失败。

转义序列

序列表示的字符

"

双引号 "

\b

退格字符

\f

换页符

\n

换行符

\r

回车符

\t

制表符

\

反斜杠 \

\uxxxx

Unicode 值 XXXX 的 UTF-8 字节

返回值说明

返回STRING类型不带引号的JSON数据。返回规则如下:

  • json值为NULL,返回 NULL。

  • json数据以双引号开始和结束,但不是有效的JSON字符串字面量,返回报错。

使用示例

  • 示例1:使用JSON_EXTRACT函数提取JSON数据中指定JSON路径下的数据,然后使用JSON_UNQUOTE函数去除结果中的双引号。

    -- 返回New York。
    SELECT JSON_UNQUOTE(JSON_EXTRACT(json '{"name": "John", "age": 25, "city": "New York"}','$.city'));
  • 示例2:识别JSON数据中包含的转义序列,并去除结果中的双引号。

    SELECT JSON_UNQUOTE(json "123");
    +-----+
    | _c0 |
    +-----+
    | 123 |
    +-----+
    
    SELECT JSON_UNQUOTE(JSON '"te\\rst"');
    -- +-----+
    | _c0 |
    +-----+
    | te
    st |
    +-----+
    
    SELECT JSON_UNQUOTE(JSON '"\\ttest"');
    -- +-----+
    | _c0 |
    +-----+
    |       test |
    +-----+
    
    SELECT JSON_UNQUOTE(JSON '"te\\nst"');
    -- +-----+
    | _c0 |
    +-----+
    | te
    st |
    +-----+
    
    SELECT JSON_UNQUOTE(JSON '"te\\bst"');
    -- +-----+
    | _c0 |
    +-----+
    | tst |
    +-----+
    
    SELECT JSON_UNQUOTE(JSON '"\\u03A9"');
    +-----+
    | _c0 |
    +-----+
    | Ω  |
    +-----+
    

相关函数

JSON_UNQUOTE函数属于JSON函数,更多JSON类型函数请参见JSON函数