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 空
本文来自博客园,作者:秋华,转载请注明原文链接:https://www.cnblogs.com/qiu-hua/p/15058231.html