Flink基础(53):FLINK-SQL函数(16)内置函数(11)字符串函数(二)

语法

VARCHAR JSON_VALUE(VARCHAR content, VARCHAR path)

入参

  • content

    VARCHAR类型,需要解析的JSON对象,使用字符串表示。

  • path
    VARCHAR类型,解析JSON的路径表达式。 目前path支持如下表达式。
     
    符号功能
    $ 根对象
    [] 数组下标
    * 数组通配符
    . 取子元素

功能描述

从JSON字符串中提取指定path的值,不合法的JSON和null都统一返回null。

示例

  • 测试数据
     
    id(INT)json(VARCHAR)path1(VARCHAR)
    1 [10, 20, [30, 40]] $[2][*]
    2 {"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"} $.ccc.hhh[*]
    3 {"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg",hhh":["h0","h1","h2"]},"iii":"jjj"} $.ccc.hhh[1]
    4 [10, 20, [30, 40]] NULL
    5 NULL $[2][*]
    6 "{xx]" "$[2][*]"
  • 测试语句
     
    SELECT 
        id,
        JSON_VALUE(json, path1) AS `value`
    FROM 
        T1;
  • 测试结果
     
    id (INT)value (VARCHAR)
    1 [30,40]
    2 ["h0","h1","h2"]
    3 H1
    4 NULL
    5 NULL
    6 NULL

语法

 
VARCHAR CHR(INT ascii)

入参

 
参数数据类型说明

ascii

INT 是0到255之间的整数。如果不在此范围内,则返回NULL。

功能描述

将ASCII码转换为字符。

示例

  • 测试数据
     
    int1(INT)int2(INT)int3(INT)
    255 97 65
  • 测试语句
     
    SELECT CHR(int1) as var1, CHR(int2) as var2, CHR(int3) as var3
    FROM T1;          
  • 测试结果
     
    var1(VARCHAR)var2(VARCHAR)var3(VARCHAR)
    ÿ a A

 

语法

 
 VARCHAR CONCAT(VARCHAR var1, VARCHAR var2, ...)  

入参

 
参数数据类型说明
var1 VARCHAR 普通字符串值
var2 VARCHAR 普通字符串值

功能描述

连接两个或多个字符串值从而组成一个新的字符串。如果任一参数为NULL时,则跳过该参数。

示例

  • 测试数据
     
    var1(VARCHAR)var2(VARCHAR)var3(VARCHAR)
    Hello My World
    Hello null World
    null null World
    null null null
  • 测试语句
     
    SELECT CONCAT(var1, var2, var3) as var
    FROM T1;              
  • 测试结果
     
    var(VARCHAR)
    HelloMyWorld
    HelloWorld
    World
    N/A

 

语法

VARCHAR CONCAT_WS(VARCHAR separator, VARCHAR var1, VARCHAR var2, ...)

入参

 
参数数据类型说明
separator VARCHAR 分隔符
var1 VARCHAR -
var2 VARCHAR -

功能描述

将每个参数值和第一个参数separator指定的分隔符依次连接到一起组成新的字符串,长度和类型取决于输入值。

 
说明 如果separator取值为null,则将separator视作与空串进行拼接。如果其它参数为NULL,在执行拼接过程中跳过取值为NULL的参数。

示例

  • 测试数据
     
    sep(VARCHAR)str1(VARCHAR)str2(VARCHAR)str3(VARCHAR)
    | Jack Harry John
    null Jack Harry John
    | null Harry John
    | Jack null null
  • 测试语句
     
    SELECT CONCAT_WS(sep, str1, str2, str3) as var FROM T1;
  • 测试结果
     
    var(VARCHAR)
    Jack|Harry|John
    JackHarryJohn
    Harry|John
    Jack

语法

 
VARCHAR LPAD(VARCHAR str, INT len, VARCHAR pad)    

入参

 
参数数据类型说明
str VARCHAR 启始的字符串。
len INT 新的字符串的长度。
pad VARCHAR 需要重复补充的字符串。

功能描述

字符串str左端填充若干个字符串pad,直到新的字符串达到指定长度len为止。

任意参数为null时返回null。

len为负数时返回为null。

pad为空串时,如果len不大于str长度,返回str裁剪后的结果。如果len大于str长度时,则返回null。

示例

  • 测试数据

     
    str(VARCHAR)len(INT)pad(VARCHAR)
    -2
    HelloWorld 15 John
    John 2 C
    C 4 HelloWorld
    null 2 C
    c 2 null
    asd 2
    2 s
    asd 4
    0
  • 测试语句

     
    SELECT LPAD(str, len, pad) AS result
    FROM T1;                
  • 测试结果
     
    result(VARCHAR)
    null
    JohnJHelloWorld
    Jo
    HelC
    null
    null
    as
    ss
    null

语法

 
VARCHAR RPAD(VARCHAR str, INT len, VARCHAR pad) 

入参

 
参数数据类型说明
str VARCHAR 启始的字符串。
len INT 新的字符串的长度。
pad VARCHAR 需要重复补充的字符串。

功能描述

字符串str右端填充若干个字符串pad,直到新的字符串达到指定长度len为止。
  • 如果任意参数为null时,则返回null。
  • 如果len长度为负数时,则返回null。
  • pad为空串,如果len不大于str长度时,则返回str裁剪后的结果。
  • 如果len大于str长度,则返回null。

示例

  • 测试数据
     
    str(VARCHAR)len(INT)pad(VARCHAR)
    -2
    HelloWorld 15 John
    John 2 C
    C 4 HelloWorld
    null 2 C
    c 2 null
    asd 2
    2 s
    asd 4
    0
  • 测试语句
     
    SELECT  RPAD(str, len, pad) as result
    FROM T1;           
  • 测试结果
     
    result(VARCHAR)
    null
    HelloWorldJohnJ
    Jo
    CHel
    null
    null
    as
    ss
    null

 

posted @ 2021-07-25 16:55  秋华  阅读(4557)  评论(0编辑  收藏  举报