Flink基础(54):FLINK-SQL函数(17) 内置函数(12)字符串函数(三)

语法

 
VARCHAR REPEAT(VARCHAR str, INT n)

入参

 
参数数据类型说明
str VARCHAR 重复字符串值。
n INT 重复次数。

功能描述

返回以字符串值为str,重复次数为N的新的字符串。如果参数为null时,则返回null。如果重复次数为0或负数,则返回空串。

示例

  • 测试数据
     
    str(VARCHAR)n(INT)
    J 9
    Hello 2
    Hello -9
    null 9
  • 测试语句
     
    SELECT  REPEAT(str,n) as var1
    FROM T1;        
  • 测试结果
     
    var1(VARCHAR)
    JJJJJJJJJ
    HelloHello
    null

语法

VARCHAR SUBSTRING(VARCHAR a, INT start)
VARCHAR SUBSTRING(VARCHAR a, INT start, INT len)      

入参

 
参数数据类型说明
a VARCHAR 指定的字符串。
start INT 在字符串a中开始截取的位置。
len INT 类截取的长度。

功能描述

获取字符串子串。截取从位置start开始,长度为len的子串。如果未指定len,则截取到字符串结尾。start从1开始,start为0当1看待,为负数时表示从字符串末尾倒序计算位置。

示例

  • 测试数据
     
    str(VARCHAR)nullstr(VARCHAR)
    k1=v1;k2=v2 null
  • 测试语句
     
    SELECT SUBSTRING('', 222222222) as var1,
           SUBSTRING(str, 2) as var2,
           SUBSTRING(str, -2) as var3,
           SUBSTRING(str, -2, 1) as var4, 
           SUBSTRING(str, 2, 1) as var5,
           SUBSTRING(str, 22) as var6,
           SUBSTRING(str, -22) as var7,
           SUBSTRING(str, 1) as var8,
           SUBSTRING(str, 0) as var9,
           SUBSTRING(nullstr, 0) as var10
    FROM T1;         
  • 测试结果
     
    var1(VARCHAR)var2(VARCHAR)var3(VARCHAR)var4(VARCHAR)var5(VARCHAR)var6(VARCHAR)var7(VARCHAR)var8(VARCHAR)var9(VARCHAR)var10(VARCHAR)
    1=v1;k2=v2 v2 v 1 k1=v1;k2=v2 k1=v1;k2=v2 null

语法

VARCHAR REVERSE(VARCHAR str) 

入参

 
参数数据类型说明
str VARCHAR 普通字符串值。

功能描述

反转字符串,返回字符串值的相反顺序。如果任一参数为null时,则返回null。

示例

  • 测试数据
     
    str1(VARCHAR)str2(VARCHAR)str3(VARCHAR)str4(VARCHAR)
    iPhoneX Alibaba World null
  • 测试语句
     
    SELECT  REVERSE(str1) as var1,REVERSE(str2) as var2,
            REVERSE(str3) as var3,REVERSE(str4) as var4
    FROM T1;          
  • 测试结果
     
    var1(VARCHAR)var2(VARCHAR)var3(VARCHAR)var4(VARCHAR)
    XenohPi ababilA dlroW null

语法

 
VARCHAR SPLIT_INDEX(VARCHAR str, VARCHAR sep, INT index)

入参

 
参数数据类型说明
str VARCHAR 被分隔的字符串。
sep VARCHAR 分隔符的字符串。
index INT 截取的字段位置。

功能描述

sep作为分隔符,将字符串str分隔成若干段,取其中的第index段。index从0开始,如果取不到字段,则返回null。如果任一参数为NULL,则返回null。

示例

  • 测试数据
     
    str(VARCHAR)sep(VARCHAR)index(INT)
    Jack,John,Mary , 2
    Jack,John,Mary , 3
    Jack,John,Mary null 0
    null , 0
  • 测试语句
     
    SELECT  SPLIT_INDEX(str, sep, index) as var1
    FROM T1;         
  • 测试结果
     
    var1(VARCHAR)
    Mary
    null
    null
    null

语法

VARCHAR REGEXP_REPLACE(VARCHAR str, VARCHAR pattern, VARCHAR replacement)

入参

 
参数数据类型说明
str VARCHAR 指定的字符串。
pattern VARCHAR 被替换的字符串。
replacement VARCHAR 用于替换的字符串。
 
注意 请您按照Java代码编写正则常量。Codegen会自动将SQL常量字符串转化为Java代码。描述一个数值(d)的正则表达式和Java中一样,为 'd'

功能描述

用字符串replacement替换字符串str中正则模式为pattern的部分,并返回新的字符串。如果参数为NULL或者正则不合法时,则返回NULL。

示例

  • 测试数据
     
    str1(VARCHAR)pattern1(VARCHAR)replace1(VARCHAR)
    2014-03-13 -
    NULL -
    2014-03-13 - NULL
    2014-03-13 s
    2014-03-13 ( s
    100-200 (d+) num
  • 测试语句
     
    SELECT  REGEXP_REPLACE(str1, pattern1, replace1) as result
    FROM T1;
  • 测试结果
     
    result(VARCHAR)
    20140313
    null
    null
    2014-03-13
    null
    num-num

语法

 
VARCHAR REGEXP_EXTRACT(VARCHAR str, VARCHAR pattern, INT index)       

入参

 
参数数据类型说明
str VARCHAR 指定的字符串。
pattern VARCHAR 匹配的字符串。
index INT 第几个被匹配的字符串。
 
注意 正则常量请按照Java代码来写。CodeGen会将SQL常量字符串自动转化为Java代码。如果要描述一个数字d,需要写成'd',即和Java中正则相同。

功能描述

使用正则模式Pattern匹配抽取字符串Str中的第Index个子串,Index从1开始,正则匹配提取。当参数为NULL或者正则不合法时,则返回NULL。

示例

  • 测试数据
     
    str1 (VARCHAR)pattern1(VARCHAR)index1 (INT)
    foothebar foo(.*?)(bar) 2
    100-200 (\d+)-(\d+) 1
    null foo(.*?)(bar) 2
    foothebar null 2
    foothebar 2
    foothebar ( 2
  • 测试语句
     
    SELECT  REGEXP_EXTRACT(str1, pattern1, index1) as result
    FROM T1;    
  • 测试结果
     
    result(VARCHAR)
    bar
    100
    null
    null
    null
    null

本文来自博客园,作者:秋华,转载请注明原文链接:https://www.cnblogs.com/qiu-hua/p/15058243.html

原文地址:https://www.cnblogs.com/qiu-hua/p/15058243.html