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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM