当前位置:   article > 正文

Flink SQL之常用函数(一)_flink sql regexp_extract

flink sql regexp_extract

官方函数查询地址:https://nightlies.apache.org/flink/flink-docs-release-1.12/dev/table/functions/systemFunctions.html

可根据使用的版本查找,该链接为1.12版本。

1.比较函数

  • = <> >  >= <  <= 

注意:select null=null; 返回为null

  • IS NULL,IS NOT NULL

空判断和非空判断

  • value1 BETWEEN [ ASYMMETRIC | SYMMETRIC ] value2 AND value3

例如:select 1 between 0 and 2; 返回true。默认ASYMMETRIC 表示value1在闭区间内 [value2,value3]

  • string1 LIKE string2 、string1 NOT LIKE string2 

例如:select 'abc' like 'a%'; 返回true,用 '用%或_模糊数据

  • value1 IN (value2 [, value3]* )、value1 NOT IN (value2 [, value3]* )

例如:select 'abc' in ('abc','e','f'); 返回true,要求类型必须一致(都为字符串,或都为其它)。select 1 in (1,2,3,4); 

  • EXISTS (sub-query)

例如:select  EXISTS (select 1); 返回true(自查询至少返回一行时)

  • value IN (sub-query)、value NOT IN (sub-query)

例如:select 1 in (select 1); 值等于子查询返回的行(只限于一个值),返回true. select 'abc' in (select 'abc'); 

2.逻辑函数

  • OR 、AND
  • NOT boolean
  • boolean IS FALSE、boolean IS NOT FALSE
  • boolean IS TRUE、boolean IS NOT TRUE、
  • boolean IS UNKNOWN、boolean IS NOT UNKNOWN

例如:select null=null  IS UNKNOWN; 返回true

3.算术函数

  • + - * /  % MOD(numeric1, numeric2) 

例如:select MOD(3,2); 3除以2的余数=1.仅当numeric1为负时结果为负

  • POWER(numeric1, numeric2) 

例如:select POWER(2,3); 返回2 的 3次幂=8.0

  • ABS(numeric) 

例如:select ABS(-1); 返回绝对值1

  • CEIL(numeric)

例如:向上取整  select CEIL(2.3); 返回3.000000

  • FLOOR(numeric)

例如:向下取整 select FLOOR(2.3); 返回2.000000

  • ROUND(numeric, integer)

例如:
--select ROUND(2.3,1); 保留1位小数2.30000。
--select ROUND(2.3,0); 保留0位小数 2.0000

  • TRUNCATE(numeric1, integer2) 

例如:select TRUNCATE(2.3,1);保留1位小数2.30000  select TRUNCATE(2.3,0) 保留0位小数 2.0000

  • RAND()

介于 0.0(含)和 1.0(不含)之间的伪随机双精度值

  • RAND(integer)

介于 0.0(含)和 1.0(不含)之间的伪随机双精度值。两个 RAND 函数具有相同的初始种子,它们将返回相同的数字序列。

  • UUID()

返回 UUID(通用唯一标识符)字符串(例如,“3d3c68f7-f608-473f-b60c-b0c44ad4cc4e”)。UUID 是使用加密强的伪随机数生成器生成的。

  • BIN(integer)

以二进制格式返回整数的字符串表示形式。如果整数为 NULL,则返回NULL。例如,BIN(4)返回“100”并BIN(12)返回“1100”

  • HEX(numeric 或 string)

以十六进制格式返回整数数值或字符串的字符串表示形式

4.字符串函数

  • string1 || string2  --拼接

例如:select 'abc' || 'def'; 返回abcdef

  • CHAR_LENGTH(string)  --字符个数

例如:select CHAR_LENGTH('abcdef'); 返回 6 

  • UPPER(string) --转大写

例如:select UPPER('aBc'); 返回 ABC

  • LOWER(string) --转小写

例如:select LOWER('aBc'); 返回abc

  • POSITION(string1 IN string2) --字串位置

例如:select POSITION('ab' in 'cdabcds'); 返回3

  • TRIM([ BOTH | LEADING | TRAILING ] string1 FROM string2) --默认从两边去除第一个

例如:select TRIM('  abc    ' from '  abcdefabc  '); 返回def 。select TRIM('  abc    '); 返回abc  两边的空格都被删除

  • LTRIM(string) --去除左边的空格
  • RTRIM(string) --去除右边的空格
  • REPEAT(string, integer) --重复字符串整数次

例如:select REPEAT('ab',3); 返回 ababab

  • REGEXP_REPLACE(string1, string2, string3) --将string1中符合正则表达式的 替换为 string3

例如:select REGEXP_REPLACE('foobar', 'oo|ar', ''); 返回 fb  

  • OVERLAY(string1 PLACING string2 FROM integer1 [ FOR integer2 ]) --将指定位置的字符串替换

例如:select OVERLAY('This is an old string' PLACING ' new' FROM 10 FOR 5);  返回 This is a new string  --不含FROM 10

  • SUBSTRING(string FROM integer1 [ FOR integer2 ]) --从指定位置截取指定长度的字串

例如:select SUBSTRING('This is an old string'FROM 10 FOR 5);  返回 n old   --含FROM 10

  • REPLACE(string1, string2, string3) --替换

例如:select REPLACE('ababab', 'abab', 'z');  用z替换abab 返回zab

  • REGEXP_EXTRACT(string1, string2[, integer]) --正则表达式匹配

例如:select REGEXP_EXTRACT('foothebar', 'foo(.*?)(bar)', 2); 返回 bar  匹配索引从 1 开始,0 表示匹配整个正则表达式

  • INITCAP(string) --第一个字符转换为大写,其余字符转换为小写

例如:select INITCAP('aBc');  返回 Abc

  • CONCAT(string1, string2,...) --拼接,如果任何参数为 NULL,则返回 NULL。
  • CONCAT_WS(string1, string2, string3,...) --拼接,第一个字符拼接符不为null则不为null

例如:select CONCAT_WS('~', 'AA', NULL, 'BB', '', 'CC');会报错 Illegal use of 'NULL'  --但官网说会跳过null
select CONCAT_WS('~', 'AA', 'BB', '', 'CC'); 返回“AA~BB~~CC”

  • LPAD(string1, integer, string2) --从string1左边填充string2到整数字符的长度。如果string1的长度小于integer,则返回string1缩短为整数字符

例如:

LPAD('hi',4,'??')返回“??hi”;LPAD('hi',1,'??')返回“h”。 
RPAD(string1, integer, string2) --从右边填充
RPAD('hi',4,'??')返回“hi??”,RPAD('hi',1,'??')返回“h”

  • FROM_BASE64(string) --从string返回 base64 解码的结果;如果字符串为 NULL,则返回NULL。

例如:FROM_BASE64('aGVsbG8gd29ybGQ=')返回“hello world”。
TO_BASE64(string) --从string返回 base64 编码的结果;如果字符串为 NULL,则返回NULL。
--TO_BASE64('hello world')返回“aGVsbG8gd29ybGQ=”。

  • ASCII(string) --     返回string的第一个字符的数值

例如:ascii('abc')返回 97 (a的ascii码),并ascii(CAST(NULL AS VARCHAR))返回 NULL。

  • INSTR(string1, string2)  --返回string2在string1 中第一次出现的位置

例如:select INSTR('bcab','a'); 返回3

  • LEFT(string, integer) --从左边截取

例如:select LEFT('abc2awe',2);   返回ab

  • RIGHT(string, integer) --从右边截取

例如:select RIGHT('abcawe',3); 返回awe 从右边截取3个

  • LOCATE(string1, string2[, integer]) --返回string2中string1在位置integer之后第一次出现的位置。如果未找到,则返回 0
  • REGEXP(string1, string2) --如果string1 的任何(可能为空)子字符串与 Java 正则表达式string2匹配,则返回 TRUE
  • REVERSE(string) --反转

例如:select REVERSE('abc'); 返回cba

  • SPLIT_INDEX(string1, string2, integer1) --用分割符分割后取第n个字串(从0开始)

例如:select SPLIT_INDEX('abc|def|ghi','|',2); 返回ghi

  • SUBSTR(string[, integer1[, integer2]]) --返回字符串的子字符串,从位置 integer1 开始,长度为 integer2(默认到末尾)

例如:select substr('abc',1,2); 返回ab

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/396689
推荐阅读
相关标签
  

闽ICP备14008679号