• Blink SQL内置函数大全


    字符串函数

    STR_TO_MAP

    功能描述

    使用listDelimiter将text分隔成K-V对,然后使用keyValueDelimiter分隔每个K-V对,组装成MAP返回。默认listDelimiter为(,), keyValueDelimiter为(=)。

    语法
    MAP STR_TO_MAP(VARCHAR text)
    MAP STR_TO_MAP(VARCHAR text, VARCHAR listDelimiter, VARCHAR keyValueDelimiter) 
    
    • 1
    • 2
    入参
    参数数据类型说明
    textVARCHAR输入文本。
    listDelimiterVARCHAR用来将text分隔成K-V对。默认为( ,)。
    keyValueDelimiterVARCHAR用来分隔每个key和value。默认为( =)。

    这里的Delimiter使用的是Java的正则表达式,遇到特殊字符需要转义。

    示例

    测试语句

    SELECT
      STR_TO_MAP('k1=v1,k2=v2')['k1'] as a
    FROM T1;
    
    • 1
    • 2
    • 3

    测试结果

    a(VARCHAR)
    v1

    POSITION

    功能描述

    返回目标字符串x在被查询字符串y里第一次出现的位置。如果目标字符串x在被查询字符串y中不存在,返回值为0。

    语法
    INTEGER POSITION( x IN  y)
    
    • 1
    入参
    参数数据类型
    xVARCHAR
    yVARCHAR
    示例

    测试语句

    POSITION('in' IN 'china') as result
    FROM T1; 
    
    • 1
    • 2

    测试结果

    result(INT)
    3

    TRIM

    功能描述

    除掉一个字串中的字头或字尾。最常见的用途是移除字首或字尾的空格。

    语法
    VARCHAR TRIM( VARCHAR x )
    
    • 1
    入参
    参数数据类型
    xVARCHAR
    示例

    测试语句

    SELECT TRIM('   Sample   ') as result
    FROM   T1;    
    
    • 1
    • 2

    测试结果

    result(VARCHAR)
    Sample

    OVERLAY

    功能描述

    用y替换x的子串。从start_position开始,替换length+1个字符。

    语法
    VARCHAR OVERLAY ( (VARCHAR x PLACING VARCHAR y FROM INT start_position [ FOR INT length ]) )
    
    • 1
    入参
    参数数据类型
    xVARCHAR
    yVARCHAR
    start_positionINT
    length(可选)INT
    示例

    测试语句

    OVERLAY('abcdefg' PLACING 'hij' FROM 2 FOR 2) as result
    FROM  T1;
    
    • 1
    • 2

    测试结果

    result(VARCHAR)
    ahijdefg

    INITCAP

    功能描述

    返回字符串,每个字转换器的第一个字母大写,其余为小写。

    语法
     VARCHAR INITCAP(A)
    
    • 1
    入参
    参数数据类型
    AVARCHAR
    示例

    测试数据

    var1(VARCHAR)
    aADvbn

    测试语句

    SELECT INITCAP(var1)as aa
    FROM T1;  
    
    • 1
    • 2

    测试结果

    aa(VARCHAR)
    Aadvbn

    REPLACE

    功能描述

    字符串替换函数。

    语法
    VARCHAR REPLACE(str1, str2, str3)     
    
    • 1
    入参
    参数数据类型说明
    str1VARCHAR原字符
    str2VARCHAR目标字符
    str3VARCHAR替换字符
    示例

    测试数据

    str1(INT)str2(INT)str3(INT)
    alibaba blinkblinkflink

    测试语句

    SELECT REPLACE(str1, str2, str3) as `result`
    FROM T1;     
    
    • 1
    • 2

    测试结果

    result(VARCHAR)
    alibaba flink

    JSON_VALUE

    功能描述

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

    语法
    VARCHAR JSON_VALUE(VARCHAR content, VARCHAR path)
    
    • 1
    入参
    • content

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

    • path

      VARCHAR类型,解析JSON的路径表达式。目前path支持如下表达式。

      符号功能
      $根对象
      []数组下标
      *数组通配符
      .取子元素
    示例

    测试数据

    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
    5NULL$[2][*]
    6“{xx]”“$[2][*]”

    测试语句

    SELECT 
        id,
        JSON_VALUE(json, path1) AS `value`
    FROM 
        T1;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    测试结果

    id (INT)value (VARCHAR)
    1[30,40]
    2[“h0”,“h1”,“h2”]
    3h1
    4NULL
    5NULL
    6NULL

    CHR

    功能描述

    将ASCII码转换为字符。

    语法
    VARCHAR CHR(INT ascii)
    
    • 1
    入参
    参数数据类型说明
    asciiINT是0到255之间的整数。如果不在此范围内,则返回NULL。
    示例

    测试数据

    int1(INT)int2(INT)int3(INT)
    2559765

    测试语句

    SELECT CHR(int1) as var1, CHR(int2) as var2, CHR(int3) as var3
    FROM T1;          
    
    • 1
    • 2

    测试结果

    var1(VARCHAR)var2(VARCHAR)var3(VARCHAR)
    ÿaA

    CONCAT

    功能描述

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

    语法
     VARCHAR CONCAT(VARCHAR var1, VARCHAR var2, ...)  
    
    • 1
    入参
    参数数据类型说明
    var1VARCHAR普通字符串值
    var2VARCHAR普通字符串值
    示例

    测试数据

    var1(VARCHAR)var2(VARCHAR)var3(VARCHAR)
    HelloMyWorld
    HellonullWorld
    nullnullWorld
    nullnullnull

    测试语句

    SELECT CONCAT(var1, var2, var3) as var
    FROM T1;              
    
    • 1
    • 2

    测试结果

    var(VARCHAR)
    HelloMyWorld
    HelloWorld
    World
    N/A

    CONCAT_WS

    功能描述

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

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

    语法
    VARCHAR CONCAT_WS(VARCHAR separator, VARCHAR var1, VARCHAR var2, ...)
    
    • 1
    入参
    参数数据类型说明
    separatorVARCHAR分隔符
    var1VARCHAR-
    var2VARCHAR-
    示例

    测试数据

    sep(VARCHAR)str1(VARCHAR)str2(VARCHAR)str3(VARCHAR)
    |JackHarryJohn
    nullJackHarryJohn
    |nullHarryJohn
    |Jacknullnull

    测试语句

    SELECT CONCAT_WS(sep, str1, str2, str3) as var FROM T1;
    
    • 1

    测试结果

    var(VARCHAR)
    Jack|Harry|John
    JackHarryJohn
    Harry|John
    Jack

    LPAD

    功能描述

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

    • 任意参数为null时返回null。

    • len为负数时返回为null。

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

    语法
    VARCHAR LPAD(VARCHAR str, INT len, VARCHAR pad)    
    
    • 1
    入参
    参数数据类型说明
    strVARCHAR启始的字符串。
    lenINT新的字符串的长度。
    padVARCHAR需要重复补充的字符串。
    示例

    测试数据

    str(VARCHAR)len(INT)pad(VARCHAR)
    -2
    HelloWorld15John
    John2C
    C4HelloWorld
    null2C
    c2null
    asd2
    2s
    asd4
    0

    测试语句

    SELECT LPAD(str, len, pad) AS result
    FROM T1;                
    
    • 1
    • 2

    测试结果

    result(VARCHAR)
    null
    JohnJHelloWorld
    Jo
    HelC
    null
    null
    as
    ss
    null

    RPAD

    功能描述

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

    • 如果任意参数为null时,则返回null。
    • 如果len长度为负数时,则返回null。
    • pad为空串,如果len不大于str长度时,则返回str裁剪后的结果。
    • 如果len大于str长度,则返回null。
    语法
    VARCHAR RPAD(VARCHAR str, INT len, VARCHAR pad) 
    
    • 1
    入参
    参数数据类型说明
    strVARCHAR启始的字符串。
    lenINT新的字符串的长度。
    padVARCHAR需要重复补充的字符串。
    示例

    测试数据

    str(VARCHAR)len(INT)pad(VARCHAR)
    -2
    HelloWorld15John
    John2C
    C4HelloWorld
    null2C
    c2null
    asd2
    2s
    asd4
    0

    测试语句

    SELECT  RPAD(str, len, pad) as result
    FROM T1;           
    
    • 1
    • 2

    测试结果

    result(VARCHAR)
    null
    HelloWorldJohnJ
    Jo
    CHel
    null
    null
    as
    ss
    null

    REPEAT

    功能描述

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

    语法
    VARCHAR REPEAT(VARCHAR str, INT n)
    
    • 1
    入参
    参数数据类型说明
    strVARCHAR重复字符串值。
    nINT重复次数。
    示例

    测试数据

    str(VARCHAR)n(INT)
    J9
    Hello2
    Hello-9
    null9

    测试语句

    SELECT  REPEAT(str,n) as var1
    FROM T1;        
    
    • 1
    • 2

    测试结果

    var1(VARCHAR)
    JJJJJJJJJ
    HelloHello
    null

    SUBSTRING

    功能描述

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

    语法
    VARCHAR SUBSTRING(VARCHAR a, INT start)
    VARCHAR SUBSTRING(VARCHAR a, INT start, INT len)      
    
    • 1
    • 2
    入参
    参数数据类型说明
    aVARCHAR指定的字符串。
    startINT在字符串a中开始截取的位置。
    lenINT截取的长度。
    示例

    测试数据

    str(VARCHAR)nullstr(VARCHAR)
    k1=v1;k2=v2null

    测试语句

    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;         
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    测试结果

    var1(VARCHAR)var2(VARCHAR)var3(VARCHAR)var4(VARCHAR)var5(VARCHAR)var6(VARCHAR)var7(VARCHAR)var8(VARCHAR)var9(VARCHAR)var10(VARCHAR)
    1=v1;k2=v2v2v1k1=v1;k2=v2k1=v1;k2=v2null

    REVERSE

    功能描述

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

    语法
    VARCHAR REVERSE(VARCHAR str) 
    
    • 1
    入参
    参数数据类型说明
    strVARCHAR普通字符串值。
    示例

    测试数据

    str1(VARCHAR)str2(VARCHAR)str3(VARCHAR)str4(VARCHAR)
    iPhoneXAlibabaWorldnull

    测试语句

    SELECT  REVERSE(str1) as var1,REVERSE(str2) as var2,
            REVERSE(str3) as var3,REVERSE(str4) as var4
    FROM T1;          
    
    • 1
    • 2
    • 3

    测试结果

    var1(VARCHAR)var2(VARCHAR)var3(VARCHAR)var4(VARCHAR)
    XenohPiababilAdlroWnull

    SPLIT_INDEX

    功能描述

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

    语法
    VARCHAR SPLIT_INDEX(VARCHAR str, VARCHAR sep, INT index)
    
    • 1
    入参
    参数数据类型说明
    strVARCHAR被分隔的字符串。
    sepVARCHAR分隔符的字符串。
    indexINT截取的字段位置。
    示例

    测试数据

    str(VARCHAR)sep(VARCHAR)index(INT)
    Jack,John,Mary,2
    Jack,John,Mary,3
    Jack,John,Marynull0
    null,0

    测试语句

    SELECT  SPLIT_INDEX(str, sep, index) as var1
    FROM T1;         
    
    • 1
    • 2

    测试结果

    var1(VARCHAR)
    Mary
    null
    null
    null

    REGEXP_REPLACE

    功能描述

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

    如果您的业务数据中存在特殊字符(即系统使用的字符或者SQL关键字),则需要对特殊字符进行转义处理。常见的特殊字符和转义方式如下表所示。

    特殊字符字符的转义方式
    \$
    .\.
    $\$
    语法
    VARCHAR REGEXP_REPLACE(VARCHAR str, VARCHAR pattern, VARCHAR replacement)
    
    • 1
    入参
    参数数据类型说明
    strVARCHAR指定的字符串。
    patternVARCHAR被替换的字符串。
    replacementVARCHAR用于替换的字符串。

    需要按照Java代码编写正则常量。Codegen会自动将SQL常量字符串转化为Java代码。描述一个数值(\d)的正则表达式和Java中一样,为 '\d'

    示例

    测试数据

    str1(VARCHAR)pattern1(VARCHAR)replace1(VARCHAR)
    2014-03-13-
    NULL-
    2014-03-13-NULL
    2014-03-13s
    2014-03-13(s
    100-200(\d+)num

    测试语句

    SELECT  REGEXP_REPLACE(str1, pattern1, replace1) as result
    FROM T1;
    
    • 1
    • 2

    测试结果

    result(VARCHAR)
    20140313
    null
    null
    2014-03-13
    null
    num-num

    REGEXP_EXTRACT

    功能描述

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

    语法
    VARCHAR REGEXP_EXTRACT(VARCHAR str, VARCHAR pattern, INT index)       
    
    • 1
    入参
    参数数据类型说明
    strVARCHAR指定的字符串。
    patternVARCHAR匹配的字符串。
    indexINT第几个被匹配的字符串。

    正则常量请按照Java代码来写。CodeGen会将SQL常量字符串自动转化为Java代码。如果要描述一个数字**\d**,需要写成**‘\d’**,即和Java中正则相同。

    示例

    测试数据

    str1 (VARCHAR)pattern1(VARCHAR)index1 (INT)
    foothebarfoo(.*?)(bar)2
    100-200(\d+)-(\d+)1
    nullfoo(.*?)(bar)2
    foothebarnull2
    foothebar2
    foothebar(2

    测试语句

    SELECT  REGEXP_EXTRACT(str1, pattern1, index1) as result
    FROM T1;    
    
    • 1
    • 2

    测试结果

    result(VARCHAR)
    bar
    100
    null
    null
    null
    null

    KEYVALUE

    功能描述

    解析str字符串中,匹配有split1(kv对的分隔符)和split2(kv的分隔符)的key-value对,根据key_name返回对应的数值。如果key_name值不存在或异常时,返回NULL。

    语法
    VARCHAR KEYVALUE(VARCHAR str, VARCHAR split1, VARCHAR split2, VARCHAR key_name)      
    
    • 1
    入参
    参数数据类型说明
    strVARCHAR字符串中的key-value(kv)对。
    split1VARCHARkv对的分隔符。
    split2VARCHARkv的分隔符。
    key_nameVARCHAR键的名称
    示例

    测试数据

    str(VARCHAR)split1(VARCHAR)split2(VARCHAR)key1(VARCHAR)
    k1=v1;k2=v2;=k2
    null;|:
    k1:v1|k2:v2null=:
    k1:v1|k2:v2|=null
    k1:v1|k2:v2|=:

    测试语句

    SELECT  KEYVALUE(str, split1, split2, key1) as `result`
    FROM T1;         
    
    • 1
    • 2

    测试结果

    result(VARCHAR)
    v2
    null
    null
    null
    null

    CHAR_LENGTH

    功能描述

    返回字符串中的字符的数量。

    语法
    CHAR_LENGTH(A)      
    
    • 1
    入参
    参数数据类型
    AVARCHAR
    示例

    测试数据

    var1(INT)
    ss
    231ee

    测试语句

    SELECT  CHAR_LENGTH(var1) as aa
    FROM T1;            
    
    • 1
    • 2

    测试结果

    aa(INT)
    2
    5

    HASH_CODE

    功能描述

    返回字符串的HASH_CODE()的绝对值。

    语法
    INT HASH_CODE(VARCHAR str)    
    
    • 1
    入参
    参数数据类型
    strVARCHAR
    示例

    测试数据

    str1(VARCHAR)str2(VARCHAR)nullstr(VARCHAR)
    k1=v1;k2=v2k1:v1,k2:v2null

    测试语句

    SELECT  HASH_CODE(str1) as var1, HASH_CODE(str2) as var2, HASH_CODE(nullstr) as var3
    FROM T1;
    
    • 1
    • 2

    测试结果

    var1(INT)var2(INT)var3(INT)
    1099348823401392878null

    CHR

    功能描述

    返回字符串的MD5值。如果参数为空串(即参数为")时,则返回空串。

    语法
    VARCHAR MD5(VARCHAR str)
    
    • 1
    入参
    • str
    • VARCHAR类型
    示例

    测试数据

    str1(VARCHAR)str2(VARCHAR)
    k1=v1;k2=v2

    测试语句

    SELECT
       MD5(str1) as var1,
       MD5(str2) as var2
    FROM T1;         
    
    • 1
    • 2
    • 3
    • 4

    测试结果

    var1(VARCHAR)var2(VARCHAR)
    19c17f42b4d6a90f7f9ffc2ea9bdd775

    REGEXP

    功能描述

    对指定的字符串执行一个正则表达式搜索,并返回一个Boolean值表示是否找到指定的匹配模式。如果str或者pattern为空或为NULL时,则返回false。

    语法
    BOOLEAN REGEXP(VARCHAR str, VARCHAR pattern) 
    
    • 1
    入参
    参数数据类型说明
    strVARCHAR指定的字符串。
    patternVARCHAR指定的匹配模式。
    示例

    测试数据

    str1(VARCHAR)pattern1(VARCHAR)
    k1=v1;k2=v2k2*
    k1:v1|k2:v2k3
    nullk3
    k1:v1|k2:v2null
    k1:v1|k2:v2(

    测试语句

    SELECT  REGEXP(str1, pattern1) AS result
    FROM T1;              
    
    • 1
    • 2

    测试结果

    result(BOOLEAN)
    true
    false
    false
    false
    false

    TO_BASE64

    功能描述

    将BINARY类型数据转换成对应base64编码的字符串输出。

    语法
    VARCHAR TO_BASE64(bin)         
    
    • 1
    入参
    参数数据类型
    binBINARY
    示例

    测试数据

    c(VARCHAR)
    SGVsbG8gd29ybGQ=
    SGk=
    SGVsbG8=

    测试语句

    SELECT  TO_BASE64(FROM_BASE64(c)) as var1
    FROM T1;       
    
    • 1
    • 2

    测试结果

    var1(VARCHAR)
    SGVsbG8gd29ybGQ=
    SGk=
    SGVsbG8=

    FROM_BASE64

    功能描述

    将base64编码的字符串str解析成对应的binary类型数据输出。

    语法
    BINARY FROM_BASE64(str)
    
    • 1
    入参
    参数数据类型说明
    strVARCHARbase64编码的字符串。
    示例

    测试数据

    a(INT)b(BIGINT)c(VARCHAR)
    11Lnull

    测试语句

    SELECT 
    from_base64(c) as var1,from_base64('SGVsbG8gd29ybGQ=') as var2 
    FROM T1; 
    
    • 1
    • 2
    • 3

    测试结果

    var1(BINARY)var2(BINARY)
    nullByte Array: [72(‘H’), 101(‘e’), 108(‘l’), 108(‘l’), 111(‘o’), 32(’ '), 119(‘w’), 111(‘o’), 114(‘r’), 108(‘l’), 100(‘d’)]

    INSTR

    功能描述

    返回目标字符串在源字符串中的位置,如果在源字符串中未找到目标字符串,则返回0。

    语法
    INT instr( string1, string2 ) 
    INT instr( string1, string2 [, start_position [, nth_appearance ] ] )   
    
    • 1
    • 2
    入参
    参数数据类型说明
    string1VARCHAR源字符串,要在该字符串中查找string2。
    string2VARCHAR目标字符串,string1中查找的字符串。
    start_positionINT起始位置,表示在string1中开始查找的其实位置:
    该参数省略(默认): 字符串索引从1开始。
    该参数为正:从左到右开始检索。
    该参数为负:从右到左开始检索。
    nth_appearanceINT匹配序号代表要查找第几次出现的string2:
    该参数省略(默认):第1次出现。
    该参数为负:系统报错。
    示例

    测试数据

    string1(VARCHAR)
    helloworld

    测试语句

    SELECT 
    instr('helloworld','lo') as res1,
    instr('helloworld','l',-1,1) as res2,   
    instr('helloworld','l',3,2) as res3
    FROM T1;            
    
    • 1
    • 2
    • 3
    • 4
    • 5

    测试结果

    res1(INT)res2(INT)res3(INT)
    494

    UPPER

    功能描述

    返回转换为大写字符的字符串。

    语法
    VARCHAR UPPER(A)     
    
    • 1
    入参
    参数数据类型
    AVARCHAR
    示例

    测试数据

    var1(VARCHAR)
    ss
    ttee

    测试语句

    SELECT UPPER(var1) as aa
    FROM T1;            
    
    • 1
    • 2

    测试结果

    aa(VARCHAR)
    SS
    TTEE

    LOWER

    功能描述

    返回转换为小写字符的字符串。

    语法
    VARCHAR LOWER(A)       
    
    • 1
    入参
    参数数据类型
    AVARCHAR
    示例

    测试数据

    var1(VARCHAR)
    Ss
    yyT

    测试语句

    SELECT LOWER(var1) as aa
    FROM T1;                 
    
    • 1
    • 2

    测试结果

    aa(VARCHAR)
    ss
    yyt

    PARSE_URL

    功能描述

    返回urlStr中指定的部分解析后的值。如果urlStr参数值为null时,则返回值为null。

    语法
    VARCHAR PARSE_URL(VARCHAR urlStr, VARCHAR partToExtract [, VARCHAR key])
    
    • 1
    入参
    参数数据类型说明
    urlStrVARCHAR链接
    partToExtractVARCHAR指定链接中解析的部分。取值如下:
    HOST
    PATH
    QUERY
    REF
    PROTOCOL
    FILE
    AUTHORITY
    USERINFO
    keyVARCHAR可选,指定截取部分中,具体的键。
    示例

    测试数据

    url1(VARCHAR)nullstr(VARCHAR)
    http://facebook.com/path/p1.php?query=1null

    测试语句

    SELECT PARSE_URL(url1, 'QUERY', 'query') as var1,
           PARSE_URL(url1, 'QUERY') as var2,
           PARSE_URL(url1, 'HOST') as var3,
           PARSE_URL(url1, 'PATH') as var4,
           PARSE_URL(url1, 'REF') as var5,
           PARSE_URL(url1, 'PROTOCOL') as var6,
           PARSE_URL(url1, 'FILE') as var7,
           PARSE_URL(url1, 'AUTHORITY') as var8,
           PARSE_URL(nullstr, 'QUERY') as var9,
           PARSE_URL(url1, 'USERINFO') as var10,
           PARSE_URL(nullstr, 'QUERY', 'query') as var11
    FROM T1; 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    测试结果

    var1(VARCHAR)var2(VARCHAR)var3(VARCHAR)var4(VARCHAR)var5(VARCHAR)var6(VARCHAR)var7(VARCHAR)var8(VARCHAR)var9(VARCHAR)var10(VARCHAR)var11(VARCHAR)
    1query=1facebook.com/path/p1.phpnullhttp/path/p1.php?query=1facebook.comnullnullnull

    数学函数

    功能描述

    返回A加B的结果。

    语法
    A + B
    
    • 1
    入参
    参数数据类型
    AINT
    BINT
    示例

    测试数据

    int1(INT)int2(INT)int3(INT)
    102030

    测试语句

    SELECT int1+int2+int3 as aa
    FROM T1;               
    
    • 1
    • 2

    测试结果

    aa(int)
    60

    功能描述

    返回A减B的结果。

    语法
    A - B
    
    • 1
    入参
    参数数据类型
    AINT
    BINT
    示例

    测试数据

    int1(INT)int2(INT)int3(INT)
    101030

    测试语句

    SELECT int3 - int2 - int1 as aa
    FROM T1;                  
    
    • 1
    • 2

    测试结果

    aa(int)
    10

    功能描述

    返回A乘以B的结果。

    语法
    A * B
    
    • 1
    入参
    参数数据类型
    AINT
    BINT
    示例

    测试数据

    nt1(INT)int2(INT)int3(INT)
    10203

    测试语句

    SELECT int1*int2*int3 as aa
    FROM T1;      
    
    • 1
    • 2

    测试结果

    aa(int)
    600

    功能描述

    返回A除以B的结果。

    语法
    A / B
    
    • 1
    入参
    参数数据类型
    AINT
    BINT
    示例

    测试数据

    int1(INT)int2(INT)
    84

    测试语句

    SELECT int1 / int2 as aa
    FROM T1;      
    
    • 1
    • 2

    测试结果

    aa(DOUBLE)
    2.0

    ABS

    功能描述

    返回A的绝对值。

    语法
    DOUBLE ABS(A)
    
    • 1
    入参
    参数数据类型
    ADOUBLE
    示例

    测试数据

    in1(DOUBLE)
    4.3

    测试语句

    SELECT ABS(in1) as aa
    FROM T1;            
    
    • 1
    • 2

    测试结果

    aa(DOUBLE)
    4.3

    ACOS

    功能描述

    返回A的反余弦值。

    语法
    ACOS(A)
    
    • 1
    入参
    参数数据类型
    ADOUBLE
    示例

    测试数据

    in1(DOUBLE)
    0.7173560908995228
    0.4

    测试语句

    SELECT ACOS(in1) as aa
    FROM T1;         
    
    • 1
    • 2

    测试结果

    aa(DOUBLE)
    0.7707963267948966
    1.1592794807274085

    BIN

    功能描述

    将长整型参数转换为二进制形式,返回类型为字符串。

    语法
    VARCHAR BIN(BIGINT number) 
    
    • 1
    入参
    参数数据类型
    numberBIGINT
    示例

    测试数据

    id(INT)x(BIGINT)
    112L
    210L
    30L
    410000000000L

    测试语句

    SELECT id, bin(x) as var1
    FROM T1;       
    
    • 1
    • 2

    测试结果

    id(INT)var1(VARCHAR)
    11100
    21010
    30
    41001010100000010111110010000000000

    ASIN

    功能描述

    返回A的反正弦值。

    语法
    DOUBLE ASIN(A)
    
    • 1
    入参
    参数数据类型
    ADOUBLE
    示例

    测试数据

    in1(DOUBLE)
    0.7173560908995228
    0.4

    测试语句

    SELECT ASIN(in1) as aa
    FROM T1;          
    
    • 1
    • 2

    测试结果

    aa(DOUBLE)
    0.8
    0.41151684606748806

    ATAN

    功能描述

    返回A的反正切值。

    语法
    DOUBLE ATAN(A)
    
    • 1
    入参
    参数数据类型
    ADOUBLE
    示例

    测试数据

    in1(DOUBLE)
    0.7173560908995228
    0.4

    测试语句

    SELECT ATAN(in1) as aa
    FROM T1;
    
    • 1
    • 2

    测试结果

    aa(DOUBLE)
    0.6222796222326533
    0.3805063771123649

    BITAND

    功能描述

    运算符按位“与”操作。输入和输出类型均为INT整型,且类型一致。

    语法
    INT BITAND(INT number1,INT number2)        
    
    • 1
    入参
    参数数据类型
    number1INT
    number2INT
    示例

    测试数据

    a(INT)b(INT)
    23

    测试语句

    SELECT BITAND(a, b) as intt
    FROM T1;              
    
    • 1
    • 2

    测试结果

    intt(INT)
    2

    BITNOT

    功能描述

    按位取反。输入和输出类型均为整型,且类型一致。

    语法
    INT BITNOT(INT number)     
    
    • 1
    入参
    参数数据类型
    numberINT
    示例

    测试数据

    a(INT)
    7

    测试语句

    SELECT BITNOT(a) as var1
    FROM T1;             
    
    • 1
    • 2

    测试结果

    var1(INT)
    0xfff8

    BITOR

    功能描述

    按位取“或”。输入和输出类型均为整型,且类型一致。

    语法
    INT BITOR(INT number1, INT number2)
    
    • 1
    入参
    参数数据类型
    number1INT
    number2INT
    示例

    测试数据

    a(INT)b(INT)
    23

    测试语句

    SELECT BITOR(a, b) as var1
    FROM T1
    
    • 1
    • 2

    测试结果

    var1(INT)
    3

    BITXOR

    功能描述

    按位取“异或”。输入和输出类型均为整型,且类型一致。

    语法
    INT BITXOR(INT number1, INT number2)
    
    • 1
    入参
    参数数据类型
    number1INT
    number2INT
    示例

    测试数据

    a(INT)b(INT)
    23

    测试语句

    SELECT BITXOR(a, b) as var1
    FROM T1;               
    
    • 1
    • 2

    测试结果

    var1(INT)
    1

    CARDINALITY

    功能描述

    返回一个集合中的元素数量。

    语法
    SELECT BITXOR(a, b) as var1
    FROM T1;               
    
    • 1
    • 2
    入参
    参数数据类型
    number1数组
    示例

    测试语句

    SELECT cardinality(array[1,2,3]) AS `result`
    FROM T1; 
    
    • 1
    • 2

    测试结果

    result(INT)
    3

    COS

    功能描述

    返回A的余弦值。

    语法
    DOUBLE COS(A)     
    
    • 1
    入参
    参数数据类型
    ADOUBLE
    示例

    测试数据

    in1(DOUBLE)
    0.8
    0.4

    测试语句

    SELECT COS(in1) as aa
    FROM T1;               
    
    • 1
    • 2

    测试结果

    aa(DOUBLE)
    0.6967067093471654
    0.9210609940028851

    COT

    功能描述

    返回A的余切值。

    语法
    DOUBLE COT(A) 
    
    • 1
    入参
    参数数据类型
    ADOUBLE
    示例

    测试数据

    in1(DOUBLE)
    0.8
    0.4

    测试语句

    SELECT COT(in1) as aa
    FROM T1;              
    
    • 1
    • 2

    测试结果

    aa(DOUBLE)
    1.0296385570503641
    0.4227932187381618

    EXP

    功能描述

    返回自然常数e的A次幂的DOUBLE类型数值。

    语法
    DOUBLE EXP(A)       
    
    • 1
    入参
    参数数据类型
    ADOUBLE
    示例

    测试数据

    in1(DOUBLE)
    8.0
    10.0

    测试语句

    SELECT EXP(in1) as aa
    FROM T1;            
    
    • 1
    • 2

    测试结果

    aa(DOUBLE)
    2980.9579870417283
    22026.465794806718

    E

    功能描述

    返回自然常数e的DOUBLE类型值。

    语法
    DOUBLE E()
    
    • 1
    入参
    参数数据类型
    ADOUBLE
    示例

    测试数据

    in1(DOUBLE)
    8.0
    10.0

    测试语句

    SELECT  e() as dou1, E() as dou2
    FROM T1; 
    
    • 1
    • 2

    测试结果

    dou1(DOUBLE)dou2(DOUBLE)
    2.7182818284590452.718281828459045

    FLOOR

    功能描述

    向下取整。

    语法
    B FLOOR(A)
    
    • 1
    入参
    参数数据类型
    AINT、BIGINT、FLOAT、DOUBLE
    示例

    测试数据

    in1(DOUBLE)in2(BIGINT)
    8.1233

    测试语句

    SELECT 
    FLOOR(in1) as out1,
    FLOOR(in2) as out2
    FROM T1;      
    
    • 1
    • 2
    • 3
    • 4

    测试结果

    out1(DOUBLE)out2(BIGINT)
    8.03

    LN

    功能描述

    返回number的自然对数。

    语法
    DOUBLE ln(DOUBLE number)
    
    • 1
    入参
    参数数据类型
    numberDOUBLE
    示例

    测试数据

    ID(INT)X(DOUBLE)
    1100.0
    28.0

    测试语句

    SELECT id, ln(x) as dou1, ln(e()) as dou2
    FROM T1;         
    
    • 1
    • 2

    测试结果

    ID(INT)dou1(DOUBLE)dou2(DOUBLE)
    14.6051701859880921.0
    22.07944154167983571.0

    LOG

    功能描述

    返回以base为底的x的自然对数。如果是只有一个参数的,返回以x为底的自然对数。

    语法
    DOUBLE LOG(DOUBLE base, DOUBLE x)
    DOUBLE LOG(DOUBLE x)
    
    • 1
    • 2
    入参
    参数数据类型
    baseDOUBLE
    xDOUBLE
    示例

    测试数据

    ID(INT)BASE(DOUBLE)X(DOUBLE)
    110.0100.0
    22.08.0

    测试语句

    SELECT id, LOG(base, x) as dou1, LOG(2) as dou2
    FROM T1;       
    
    • 1
    • 2

    测试结果

    ID(INT)dou1(DOUBLE)dou2(DOUBLE)
    12.00.6931471805599453
    23.00.6931471805599453

    LOG10

    功能描述

    返回以10为底的自然对数。若x为NULL,则返回NULL。若x为负数会引发异常。

    语法
    DOUBLE LOG10(DOUBLE x)   
    
    • 1
    入参
    参数数据类型
    xDOUBLE
    示例

    测试数据

    id(INT)X(INT)
    1100
    210

    测试语句

    SELECT id, log10(x) as dou1
    FROM T1;         
    
    • 1
    • 2

    测试结果

    id(INT)dou1(DOUBLE)
    12.0
    21.0

    LOG2

    功能描述

    返回以2为底的自然对数。若x为NULL,则返回NULL。若x为负数,会引发异常。

    语法
    DOUBLE LOG2(DOUBLE x)  
    
    • 1
    入参
    参数数据类型
    xDOUBLE
    示例

    测试数据

    id(INT)X(INT)
    18
    22

    测试语句

    SELECT id, log2(x) as dou1
    FROM T1;          
    
    • 1
    • 2

    测试结果

    id(INT)dou1(DOUBLE)
    13.0
    21.0

    PI

    功能描述

    获取圆周率常量PI值。

    语法
    DOUBLE PI()  
    
    • 1
    入参

    无。

    示例

    测试数据

    ID(INT)X(INT)
    18

    测试语句

    SELECT id, PI() as dou1
    FROM T1;            
    
    • 1
    • 2

    测试结果

    ID(INT)dou1(DOUBLE)
    13.141592653589793

    POWER

    功能描述

    返回A的B次幂。

    语法
    DOUBLE POWER(A, B)   
    
    • 1
    入参
    参数数据类型
    ADOUBLE
    BDOUBLE
    示例

    测试数据

    in1(DOUBLE)in2(DOUBLE)
    2.04.0

    测试语句

    SELECT POWER(in1, in2) as aa
    FROM T1;        
    
    • 1
    • 2

    测试结果

    aa(DOUBLE)
    16.0

    RAND

    功能描述

    返回大于等于0小于1的DOUBLE类型随机数。

    语法
    DOUBLE RAND([BIGINT seed])
    
    • 1
    入参
    参数数据类型说明
    seedBIGINTSeed取值为随机数,决定随机数序列的起始值。
    示例

    测试数据

    id(INT)X(INT)
    18

    测试语句

    SELECT id, rand(1) as dou1, rand(3) as dou2
    FROM T1;         
    
    • 1
    • 2

    测试结果

    id(INT)dou1(DOUBLE)dou2(DOUBLE)
    10.73087819070329090.731057369148862

    SIN

    功能描述

    返回A的正弦值。

    语法
    DOUBLE SIN(A)   
    
    • 1
    入参
    参数数据类型
    ADOUBLE
    示例

    测试数据

    in1(DOUBLE)
    8.0
    0.4

    测试语句

    SELECT SIN(in1) as aa
    FROM T1;             
    
    • 1
    • 2

    测试结果

    aa(DOUBLE)
    0.9893582466233818
    0.3894183423086505

    SQRT

    功能描述

    返回A的平方根。

    语法
    DOUBLE SQRT(A)         
    
    • 1
    入参
    参数数据类型
    ADOUBLE
    示例

    测试数据

    in1(DOUBLE)
    8.0

    测试语句

    SELECT SQRT(in1) as aa
    FROM T1;        
    
    • 1
    • 2

    测试结果

    aa(DOUBLE)
    2.8284271247461903

    TAN

    功能描述

    计算A的正切值。

    语法
    DOUBLE TAN(A)    
    
    • 1
    入参
    参数数据类型
    ADOUBLE
    示例

    测试数据

    in1(DOUBLE)
    0.8
    0.4

    测试语句

    SELECT TAN(in1) as aa
    FROM T1;              
    
    • 1
    • 2

    测试结果

    aa(DOUBLE)
    1.0296385570503641
    0.4227932187381618

    DEGREES

    功能描述

    将弧度x转换为数值。

    语法
    DOUBLE DEGREES( double x )
    
    • 1
    入参
    参数数据类型
    xDOUBLE
    示例

    测试语句

    SELECT DEGREES (PI()) as result
    FROM T1;
    
    • 1
    • 2

    测试结果

    result(DOUBLE)
    180.0

    CHARACTER_LENGTH

    功能描述

    返回字符串x中的字符数。

    语法
    INTEGER CHARACTER_LENGTH( VARCHAR x )       
    
    • 1
    入参
    参数数据类型
    xVARCHAR
    示例

    测试数据

    ID(INT)X(VARCHAR)
    1StreamCompute

    测试语句

    SELECT CHARACTER_LENGTH( x ) as result
    FROM T1;                 
    
    • 1
    • 2

    测试结果

    ID(INT)result(INT)
    113

    ROUND

    功能描述

    将数值按照指定的小数位四舍五入。

    语法
    T ROUND( T x, INT n)   
    
    • 1
    入参
    参数数据类型
    xT参数类型,支持DECIMAL、TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE
    nINT
    示例

    测试数据

    in1(DECIMAL)
    0.7173560908995228
    0.4

    测试语句

    SELECT ROUND(in1,2) as `result`
    FROM T1;         
    
    • 1
    • 2

    测试结果

    result(DECIMAL)
    0.72
    0.40

    MOD

    功能描述

    求整数x除以整数y的余数。当x为负值时,或者x、y均为负值时,结果为负值。

    语法
    INTEGER MOD(INTEGER x,INTEGER y) 
    
    • 1
    入参
    参数数据类型
    xINTEGER
    yINTEGER
    示例

    测试数据

    X(INT)Y(INT)
    293
    -293
    -29-3

    测试语句

    SELECT MOD(x,y) as result
    FROM T1;        
    
    • 1
    • 2

    测试结果

    ID(INT)result(INT)
    12
    2-2
    3-2

    CONV

    功能描述

    将长整型数字或字符串形式数字从一种进制转换为另一种进制,CONV()精度为64位。当number是null或非法字符时,结果返回为NULL。

    语法
    VARCHAR CONV(BIGINT number, INT FROM_BASE, INT TO_BASE)
    or 
    VARCHAR CONV(VARCHAR number, INT FROM_BASE, INT TO_BASE)
    
    • 1
    • 2
    • 3
    入参
    参数数据类型
    numberBIGINT、VARCHAR。
    FROM_BASEINT,非负数, 取值范围**[2, 36]**。
    TO_BASEINT,可以为正数(无符号整数)、负数(有符号整数)、ABS(TO_BASE) ,取值范围**[2, 36]**。
    示例

    测试数据

    id(INT)x(BIGINT)y (VARCHAR)
    112L‘12’
    210L‘10’
    30L‘test’
    4NULLNULL

    测试语句

    SELECT  id, conv(x, 10, 16) as var1, conv(y, 10, 2) as var2
    FROM T1;
    
    • 1
    • 2

    测试结果

    id(INT)var1(VARCHAR)var2(VARCHAR)
    1C1100
    2A1010
    3ONULL
    4NULLNULL

    CEIL

    功能描述

    向上取整。

    语法
    B CEIL(A)  
    
    • 1
    入参
    参数数据类型
    AINT、BIGINT、FLOAT或DOUBLE
    BINT、BIGINT、FLOAT或DOUBLE
    示例

    测试数据

    in1(INT)in2(DOUBLE)
    12.3

    测试语句

    SELECT
    CEIL (in1) as out1
    CEIL (in2) as out2
    FROM T1;           
    
    • 1
    • 2
    • 3
    • 4

    测试结果

    out1(INT)out2(DOUBLE)
    13.0

    日期函数

    TO_TIMESTAMP

    功能描述

    将BIGINT类型或VARCHAR类型的日期转换成TIMESTAMP类型。

    语法
    TIMESTAMP TO_TIMESTAMP(BIGINT time)
    TIMESTAMP TO_TIMESTAMP(VARCHAR date)
    TIMESTAMP TO_TIMESTAMP(VARCHAR date, VARCHAR format)
    
    • 1
    • 2
    • 3
    入参
    参数数据类型
    timeBIGINT。 单位为毫秒。
    dateVARCHAR。默认格式为yyyy-MM-dd HH:mm:ss
    formatVARCHAR
    示例

    测试数据

    timestamp1(BIGINT)timestamp2(VARCHAR)timestamp3(VARCHAR)
    15131356770002017-09-15 00:00:0020170915000000

    测试语句

    SELECT TO_TIMESTAMP(timestamp1) as var1,
     TO_TIMESTAMP(timestamp2) as var2,
     TO_TIMESTAMP(timestamp3, 'yyyyMMddHHmmss') as var3
    FROM T1;
    
    • 1
    • 2
    • 3
    • 4

    测试结果

    var1(TIMESTAMP)var2(TIMESTAMP)var3(TIMESTAMP)
    2017-12-13 03:27:57.02017-09-15 00:00:00.02017-09-15 00:00:00.0

    LOCALTIMESTAMP

    功能描述

    返回当前系统的时间戳。

    语法
    timestamp LOCALTIMESTAMP
    
    • 1
    入参

    示例

    测试语句

    SELECT 
    LOCALTIMESTAMP as `result`
    FROM T1;
    
    • 1
    • 2
    • 3

    测试结果

    result (TIMESTAMP)
    2018-07-27 14:04:38.998

    CURRENT_TIMESTAMP

    功能描述

    返回当前UTC(GMT+0)时间戳,时间戳单位为毫秒。

    语法
    TIMESTAMP CURRENT_TIMESTAMP
    
    • 1
    入参

    示例

    测试语句

    SELECT CURRENT_TIMESTAMP as var1
    FROM T1;
    
    • 1
    • 2

    测试结果

    var1(TIMESTAMP)
    2007-04-30 13:10:02.047

    NOW

    功能描述
    • 未指定参数时返回当前时区时间的时间戳,单位为秒。
    • 可以指定INT类型参数作为偏移值(单位:秒),返回偏移后的时间戳。例如,now(100)返回当前时间戳加100秒的时间戳。偏移值为NULL时,返回值为NULL。
    语法
    BIGINT NOW()
    BIGINT NOW(a)
    
    • 1
    • 2
    入参
    参数数据类型
    aINT
    示例

    测试数据

    a(INT)
    null

    测试语句

    SELECT 
     NOW() as now,
     NOW(100) as now_100,
     NOW(a) as now_null
    FROM T1;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    测试结果

    now(BIGINT)now_100(BIGINT)now_null(BIGINT)
    14030069111403007011null

    DATE_FORMAT

    功能描述

    将字符串类型的日期从源格式转换至目标格式。

    语法
    VARCHAR DATE_FORMAT(TIMESTAMP time, VARCHAR to_format)
    VARCHAR DATE_FORMAT(VARCHAR date, VARCHAR to_format)
    VARCHAR DATE_FORMAT(VARCHAR date, VARCHAR from_format, VARCHAR to_format)
    
    • 1
    • 2
    • 3
    入参

    第一个参数(time 或 date)为源字符串。

    第二个参数from_format可选,为源字符串的格式,默认为yyyy-MM-dd hh:mm:ss

    第三个参数为返回日期的格式,返回值为转换格式后的字符串类型日期。

    如果有参数为NULL或解析错误,则返回NULL。

    参数数据类型
    dateVARCHAR。默认格式:yyyy-MM-dd HH:mm:ss
    timeTIMESTAMP
    from_formatVARCHAR
    to_formatVARCHAR
    示例

    测试数据

    date1(VARCHAR)datetime1(VARCHAR)nullstr(VARCHAR)
    0915-20172017-09-15 00:00:00NULL

    测试语句

    SELECT DATE_FORMAT(datetime1, 'yyMMdd') as var1,
     DATE_FORMAT(nullstr, 'yyMMdd') as var2,
     DATE_FORMAT(datetime1, nullstr) as var3,
     DATE_FORMAT(date1, 'MMdd-yyyy', nullstr) as var4,
     DATE_FORMAT(date1, 'MMdd-yyyy', 'yyyyMMdd') as var5,
     DATE_FORMAT(TIMESTAMP '2017-09-15 23:00:00', 'yyMMdd') as var6
    FROM T1;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    测试结果

    var1(VARCHAR)var2(VARCHAR)var3(VARCHAR)var4(VARCHAR)var5(VARCHAR)var6(VARCHAR)
    170915nullnullnull20170915170915

    UNIX_TIMESTAMP

    功能描述

    返回date转换成的长整型时间戳,单位为秒。无参数时返回当前时间戳,单位为秒,与now语义相同。如果有参数为null或解析错误,返回null。

    语法
    BIGINT UNIX_TIMESTAMP()
    BIGINT UNIX_TIMESTAMP(VARCHAR date)
    BIGINT UNIX_TIMESTAMP(TIMESTAMP timestamp)
    BIGINT UNIX_TIMESTAMP(VARCHAR date, VARCHAR format)
    
    • 1
    • 2
    • 3
    • 4
    入参
    参数数据类型
    timestampTIMESTAMP
    dateVARCHAR。 默认格式为yyyy-MM-dd HH:mm:ss
    formatVARCHAR。 默认格式为yyyy-MM-dd hh:mm:ss
    示例

    测试数据

    nullstr(VARCHAR)
    null

    测试语句

    SELECT UNIX_TIMESTAMP() as big1,
           UNIX_TIMESTAMP(nullstr) as big2
    FROM T1;
    
    • 1
    • 2
    • 3

    测试结果

    big1(BIGINT)big2(BIGINT)
    1403006911null

    TO_DATE

    功能描述

    将INT类型或VARCHAR类型的日期转换成DATE类型。

    语法
    Date TO_DATE(INT time)
    Date TO_DATE(VARCHAR date)
    Date TO_DATE(VARCHAR date,VARCHAR format)
    
    • 1
    • 2
    • 3
    入参
    参数数据类型
    timeINT。表示从1970-1-1到所表示时间之间天数。
    dateVARCHAR。默认格式为yyyy-MM-dd。
    formatVARCHAR
    示例

    测试数据

    date1(INT)date2(VARCHAR)date3(VARCHAR)
    1002017-09-1520170915

    测试语句

    SELECT TO_DATE(date1) as var1,
     TO_DATE(date2) as var2,
     TO_DATE(date3,'yyyyMMdd') as var3
    FROM T1;
    
    • 1
    • 2
    • 3
    • 4

    测试结果

    var1(DATE)var2(DATE)var3(DATE)
    1970-04-112017-09-152017-09-15

    FROM_UNIXTIME

    功能描述

    返回为VARCHAR类型的日期值,默认格式:yyyy-MM-dd HH:mm:ss,若指定日期格式按指定格式输出任一输入参数是NULL,返回NULL。

    语法
    VARCHAR FROM_UNIXTIME(BIGINT unixtime[, VARCHAR format])
    
    • 1
    入参
    参数数据类型
    unixtimeBIGINT。以秒为单位的时间戳。
    formatVARCHAR

    参数format可选,日期格式,默认格式为yyyy-MM-dd HH:mm:ss,表示返回符合指定格式的日期,如果有参数为null或解析错误,则返回null。

    示例

    测试数据

    unixtime1(BIGINT)nullstr(VARCHAR)
    1505404800null

    测试语句

    SELECT FROM_UNIXTIME(unixtime1) as var1, 
     FROM_UNIXTIME(unixtime1,'MMdd-yyyy') as var2,
     FROM_UNIXTIME(unixtime1,nullstr) as var3
    FROM T1;               
    
    • 1
    • 2
    • 3
    • 4

    测试结果

    var1(VARCHAR)var2(VARCHAR)var3(VARCHAR)
    2017-09-15 00:00:000915-2017null

    DATEDIFF

    功能描述

    计算从enddate到startdate两个时间的天数差值,返回整数。若有参数为NULL或解析错误,返回NULL。

    语法
    INT DATEDIFF(VARCHAR enddate, VARCHAR startdate)
    INT DATEDIFF(TIMESTAMP enddate, VARCHAR startdate)
    INT DATEDIFF(VARCHAR enddate, TIMESTAMP startdate)
    INT DATEDIFF(TIMESTAMP enddate, TIMESTAMP startdate)
    
    • 1
    • 2
    • 3
    • 4
    入参
    参数数据类型
    startdateTIMESTAMP或VARCHAR
    enddateTIMESTAMP或VARCHAR

    VARCHAR日期格式:yyyy-MM-dd或yyyy-MM-dd HH:mm:ss。

    示例

    测试数据

    datetime1(VARCHAR)datetime2(VARCHAR)nullstr(VARCHAR)
    2017-10-15 00:00:002017-09-15 00:00:00null

    测试语句

    SELECT  DATEDIFF(datetime1, datetime2) as int1, 
            DATEDIFF(TIMESTAMP '2017-10-15 23:00:00',datetime2) as int2, 
            DATEDIFF(datetime2,TIMESTAMP '2017-10-15 23:00:00') as int3, 
            DATEDIFF(datetime2,nullstr) as int4, 
            DATEDIFF(nullstr,TIMESTAMP '2017-10-15 23:00:00') as int5, 
            DATEDIFF(nullstr,datetime2) as int6, 
            DATEDIFF(TIMESTAMP '2017-10-15 23:00:00',TIMESTAMP '2017-9-15 00:00:00')as int7
    FROM T1;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    测试结果

    int1(INT)int2(INT)int3(INT)int4(INT)int5(INT)int6(INT)int7(INT)
    3031-31nullnullnull31

    DATE_SUB

    功能描述

    返回startdate减去days天数的日期。返回VARCHAR类型的yyyy-MM-dd日期格式。如果有参数为null或解析错误,返回null。

    语法
    VARCHAR DATE_SUB(VARCHAR startdate, INT days)
    VARCHAR DATE_SUB(TIMESTAMP time, INT days)
    
    • 1
    • 2
    入参
    参数数据类型
    startdateVARCHAR
    timeTIMESTAMP
    daysINT

    VARCHAR类型日期格式:yyyy-MM-dd或yyyy-MM-dd HH:mm:ss。

    示例

    测试数据

    date1(VARCHAR)nullstr(VARCHAR)
    2017-10-15null

    测试语句

    SELECT DATE_SUB(date1, 30) as var1,
     DATE_SUB(TIMESTAMP '2017-10-15 23:00:00',30) as var2,
     DATE_SUB(nullstr,30) as var3
    FROM T1;
    
    • 1
    • 2
    • 3
    • 4

    测试结果

    var1(VARCHAR)var2(VARCHAR)var3(VARCHAR)
    2017-09-152017-09-15null

    DATE_ADD

    功能描述

    返回指定startdate日期days天数后的VARCHAR类型日期,返回string格式的日期为yyyy-MM-dd。如果有参数为null或解析错误,返回null。

    语法
    VARCHAR DATE_ADD(VARCHAR startdate, INT days)
    VARCHAR DATE_ADD(TIMESTAMP time, INT days)
    
    • 1
    • 2
    入参
    参数数据类型
    startdateVARCHAR
    timeTIMESTAMP
    daysINT

    VARCHAR类型日期格式:yyyy-MM-dd或yyyy-MM-dd HH:mm:ss。

    示例

    测试数据

    datetime1(VATCHAR)nullstr(VATCHAR)
    2017-09-15 00:00:00null

    测试语句

    SELECT DATE_ADD(datetime1, 30) as var1,
     DATE_ADD(TIMESTAMP '2017-09-15 23:00:00',30) as var2,
     DATE_ADD(nullstr,30) as var3
    FROM T1;   
    
    • 1
    • 2
    • 3
    • 4

    测试结果

    var1(VARCHAR)var2(VARCHAR)var3(VARCHAR)
    2017-10-152017-10-15null

    WEEK

    功能描述

    计算指定日期在一年中的第几周,周数取值区间1~53。

    语法
    BIGINT WEEK(DATE date)
    BIGINT WEEK(TIMESTAMP timestamp)
    
    • 1
    • 2
    入参
    参数数据类型
    dateDATE
    timestampTIMESTAMP
    示例

    测试数据

    dateStr(VARCHAR)date1(DATE)ts1(TIMESTAMP)
    2017-09-152017-11-102017-10-15 00:00:00

    测试语句

    SELECT WEEK(TIMESTAMP '2017-09-15 00:00:00') as int1,
     WEEK(date1) as int2,
     WEEK(ts1) as int3,
     WEEK(CAST(dateStr AS DATE)) as int4
    FROM T1;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    测试结果

    int1(BIGINT)int2(BIGINT)int3(BIGINT)int4(BIGINT)
    37454137

    YEAR

    功能描述

    返回输入时间的年份。

    语法
    BIGINT YEAR(TIMESTAMP timestamp)
    BIGINT YEAR(DATE date)
    
    • 1
    • 2
    入参
    参数数据类型
    dateDATE
    timestampTIMESTAMP
    示例

    测试数据

    tsStr(VARCHAR)dateStr(VARCHAR)tdate(DATE)ts(TIMESTAMP)
    2017-10-15 00:00:002017-09-152017-11-102017-10-15 00:00:00

    测试语句

    SELECT YEAR(TIMESTAMP '2016-09-15 00:00:00') as int1,
     YEAR(DATE '2017-09-22') as int2,
     YEAR(tdate) as int3,
     YEAR(ts) as int4,
     YEAR(CAST(dateStr AS DATE)) as int5,
     YEAR(CAST(tsStr AS TIMESTAMP)) as int6
    FROM T1;          
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    测试结果

    int1(BIGINT)int2(BIGINT)int3(BIGINT)int4(BIGINT)int5(BIGINT)int6(BIGINT)
    201620172017201720152017

    MONTH

    功能描述

    返回输入时间参数中的月,范围1~12。

    语法
    BIGINT MONTH(TIMESTAMP timestamp) 
    BIGINT MONTH(DATE date)
    
    • 1
    • 2
    入参
    参数数据类型
    timeTIME
    timestampTIMESTAMP
    示例

    测试数据

    a(TIMESTAMP)b(DATE)
    2016-09-15 00:00:002017-10-15

    测试语句

    SELECT
     MONTH(cast( a as TIMESTAMP)) as int1,
     MONTH(cast( b as DATE)) as int2
    FROM T1;     
    
    • 1
    • 2
    • 3
    • 4

    测试结果

    int1(BIGINT)int2(BIGINT)
    910

    HOUR

    功能描述

    返回输入时间参数time或timestamp中的24小时制的小时数,范围0~23。

    语法
    BIGINT HOUR(TIME time)
    BIGINT HOUR(TIMESTAMP timestamp)    
    
    • 1
    • 2
    入参
    参数数据类型
    timeTIME
    timestampTIMESTAMP
    示例

    测试数据

    datetime1(VARCHAR)time1(VARCHAR)time2(TIME)timestamp1(TIMESTAMP)
    2017-10-15 11:12:1322:23:2422:23:242017-10-15 11:12:13

    测试语句

    SELECT HOUR(TIMESTAMP '2016-09-20 23:33:33') AS int1,
     HOUR(TIME '23:30:33') AS int2,
     HOUR(time2) AS int3,
     HOUR(timestamp1) AS int4,
     HOUR(CAST(time1 AS TIME)) AS int5,
     HOUR(TO_TIMESTAMP(datetime1)) AS int6
    FROM T1;              
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    测试结果

    int1(BIGINT)int2(BIGINT)int3(BIGINT)int4(BIGINT)int5(BIGINT)int6(BIGINT)
    232322112211

    DAYOFMONTH

    功能描述

    返回输入时间参数date或time中所指代的“日”。返回值范围为1~31。

    语法
    BIGINT DAYOFMONTH(TIMESTAMP time)
    BIGINT DAYOFMONTH(DATE date)
    
    • 1
    • 2
    入参
    参数数据类型
    dateDATE
    timeTIMESTAMP
    示例

    测试数据

    tsStr(VARCHAR)dateStr(VARCHAR)tdate(DATE)ts(TIMESTAMP)
    2017-10-15 00:00:002017-09-152017-11-102017-10-15 00:00:00

    测试语句

    SELECT DAYOFMONTH(TIMESTAMP '2016-09-15 00:00:00') as int1,
     DAYOFMONTH(DATE '2017-09-22') as int2,
     DAYOFMONTH(tdate) as int3,
     DAYOFMONTH(ts) as int4,
     DAYOFMONTH(CAST(dateStr AS DATE)) as int5,
     DAYOFMONTH(CAST(tsStr AS TIMESTAMP)) as int6
    FROM T1; 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    测试结果

    int1(BIGINT)int2(BIGINT)int3(BIGINT)int4(BIGINT)int5(BIGINT)int6(BIGINT)
    152210151515

    MINUTE

    功能描述

    返回输入时间参数中time或timestamp中的“分钟”部分。取值范围0~59。

    语法
    BIGINT MINUTE(TIME time) 
    BIGINT MINUTE(TIMESTAMP timestamp)
    
    • 1
    • 2
    入参
    参数数据类型
    timeTIME
    timestampTIMESTAMP
    示例

    测试数据

    datetime1(VARCHAR)time1(VARCHAR)time2(TIME)timestamp1(TIMESTAMP)
    2017-10-15 11:12:1322:23:2422:23:242017-10-15 11:12:13

    测试语句

    SELECT MINUTE(TIMESTAMP '2016-09-20 23:33:33') as int1,
     MINUTE(TIME '23:30:33') as int2,
     MINUTE(time2) as int3,
     MINUTE(timestamp1) as int4,
     MINUTE(CAST(time1 AS TIME)) as int5,
     MINUTE(CAST(datetime1 AS TIMESTAMP)) as int6
    FROM T1;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    测试结果

    int1(BIGINT)int2(BIGINT)int3(BIGINT)int4(BIGINT)int5(BIGINT)int6(BIGINT)
    333023122312

    SECOND

    功能描述

    返回输入时间参数中的“秒”部分,范围0~59。

    语法
    BIGINT SECOND(TIMESTAMP timestamp)
    BIGINT SECOND(TIME time)    
    
    • 1
    • 2
    入参
    参数数据类型
    timeTIME
    timestampTIMESTAMP
    示例

    测试数据

    datetime1(VARCHAR)time1(VARCHAR)time2(TIME)timestamp1(TIMESTAMP)
    2017-10-15 11:12:1322:23:2422:23:242017-10-15 11:12:13

    测试语句

    SELECT SECOND(TIMESTAMP '2016-09-20 23:33:33') as int1,
     SECOND(TIME '23:30:33') as int2,
     SECOND(time2) as int3,
     SECOND(timestamp1) as int4,
     SECOND(CAST(time1 AS TIME)) as int5,
     SECOND(CAST(datetime1 AS TIMESTAMP)) as int6
    FROM T1;   
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    测试结果

    int1(BIGINT)int2(BIGINT)int3(BIGINT)int4(BIGINT)int5(BIGINT)int6(BIGINT)
    333324132413

    TIMESTAMPADD

    功能描述

    返回时间间隔单位计算后的时间。

    语法
    TIMESTAMP TIMESTAMPADD(interval,INT int_expr,TIMESTAMP datetime_expr)
    DATE TIMESTAMPADD(interval,INT int_expr,DATE datetime_expr)       
    
    • 1
    • 2
    入参
    参数数据类型
    intervalVARCHAR
    int_exprINT
    datetime_exprTIMESTAMP或DATE

    interval可取值如下。

    nterval参数时间间隔单位
    FRAC_SECOND毫秒
    SECOND
    MINUTE分钟
    HOUR小时
    DAY
    WEEK星期
    MONTH
    QUARTER季度
    YEAR
    示例

    测试数据

    a(TIMESTAMP)b(DATE)
    2018-07-09 10:23:561990-02-20

    测试语句

    SELECT 
    TIMESTAMPADD(HOUR,3,a) AS `result1`
    TIMESTAMPADD(DAY,3,b) AS `result2`
    FROM T1;
    
    • 1
    • 2
    • 3
    • 4

    测试结果

    result1(TIMESTAMP)result2(DATE)
    2018-07-09 13:23:56.01990-02-23

    EXTRACT

    功能描述

    返回日期/时间的单独部分,例如年、月、日、小时、分钟、周数等。

    语法
    BIGINT EXTRACT(unit FROM time)
    
    • 1
    入参

    time:任意日期表达式。

    unit:日期单元,可取值如下:

    • MICROSECOND
    • SECOND
    • MINUTE
    • HOUR
    • DAY
    • WEEK
    • MONTH
    • QUARTER
    • YEAR
    • SECOND_MICROSECOND
    • MINUTE_MICROSECOND
    • MINUTE_SECOND
    • HOUR_MICROSECOND
    • HOUR_SECOND
    • HOUR_MINUTE
    • DAY_MICROSECOND
    • DAY_SECOND
    • DAY_MINUTE
    • DAY_HOUR
    • YEAR_MONTH
    示例

    测试语句

    EXTRACT(YEAR FROM CURRENT_TIMESTAMP) AS OrderYear,
    EXTRACT(MONTH FROM CURRENT_TIMESTAMP) AS OrderMonth,
    EXTRACT(DAY FROM CURRENT_TIMESTAMP) AS OrderDay,
    EXTRACT(WEEK FROM CURRENT_TIMESTAMP) AS OrderWeek    
    
    • 1
    • 2
    • 3
    • 4

    测试结果

    OrderYear(BIGINT)OrderMonth(BIGINT)OrderDay(BIGINT)OrderWeek(BIGINT)
    2018101141

    LOCALTIME

    功能描述

    以数据类型TIME的值返回会话时区中的当前时间。LOCALTIME可当变量直接使用。

    语法
    TIME LOCALTIME
    
    • 1
    入参

    示例

    测试语句

    SELECT LOCALTIME as `result`
    FROM T1;      
    
    • 1
    • 2

    测试结果

    result(TIME)
    19:00:47

    CURRENT_DATE

    功能描述

    返回当前系统日期。

    语法
    CURRENT_DATE  
    
    • 1
    入参

    示例

    测试语句

    SELECT CURRENT_DATE as res
    FROM T1;            
    
    • 1
    • 2

    测试结果

    res(DATE)
    2018-09-20

    逻辑函数

    =

    功能描述

    如果A等于B,返回TRUE,否则返回FALSE。

    语法
     A = B 
    
    • 1
    入参
    参数数据类型
    AINT
    BINT
    示例

    测试数据

    int1(INT)int2(INT)int3(INT)
    976565

    测试语句

    SELECT int1 as aa
    FROM T1
    WHERE int3 = int2;           
    
    • 1
    • 2
    • 3

    测试结果

    aa(int)
    97

    >

    功能描述

    如果A大于B,返回TRUE,否则返回FALSE。

    语法
     A > B
    
    • 1
    入参
    参数数据类型
    AINT
    BINT
    示例

    测试数据

    int1(INT)int2(INT)int3(INT)
    9765100

    测试语句

    SELECT int1 as aa
    FROM T1
    WHERE int3 > int2;
    
    • 1
    • 2
    • 3

    测试结果

    aa(int)
    97

    >=

    功能描述

    如果A大于等于B,返回TRUE,否则返回FALSE。

    语法
     A >= B
    
    • 1
    入参
    参数数据类型
    AINT
    BINT
    示例

    测试数据

    int1(INT)int2(INT)int3(INT)
    976565
    9661

    测试语句

    SELECT int1 as aa
    FROM T1
    WHERE int3 >= int2;
    
    • 1
    • 2
    • 3

    测试结果

    aa(int)
    97
    9

    <=

    功能描述

    如果A小于等于B,返回TRUE,否则返回FALSE。

    语法
     A <= B
    
    • 1
    入参
    参数数据类型
    AINT
    BINT
    示例

    测试数据

    int1(INT)int2(INT)int3(INT)
    976665
    965

    测试语句

    SELECT int1 as aa
    FROM T1
    WHERE int3 <= int2;
    
    • 1
    • 2
    • 3

    测试结果

    aa(int)
    97
    9

    <

    功能描述

    如果A小于B,返回TRUE,否则返回FALSE。

    语法
     A < B
    
    • 1
    入参
    参数数据类型
    AINT
    BINT
    示例

    测试数据

    int1(INT)int2(INT)int3(INT)
    976665
    965

    测试语句

    SELECT int1 as aa
    FROM T1
    WHERE int3 < int2;
    
    • 1
    • 2
    • 3

    测试结果

    aa(int)
    97
    9

    <>

    功能描述

    如果A不等于B,则返回TRUE,否则返回FALSE。

    语法
     A <> B
    
    • 1
    入参
    参数数据类型
    ATIMESTAMP、BIGINT、INT、VARCHAR、DECIMAL
    BTIMESTAMP、BIGINT、INT、VARCHAR、DECIMAL
    示例

    测试数据

    int1(INT)int2(INT)int3(INT)
    97666

    测试语句

    SELECT int1 as aa
    FROM T1
    WHERE int3 <> int2;
    
    • 1
    • 2
    • 3

    测试结果

    aa(int)
    97

    AND

    功能描述

    如果A和B均为TRUE,则为TRUE,否则为FALSE。

    语法
     A AND B   
    
    • 1
    入参
    参数数据类型
    ABOOLEAN
    BBOOLEAN
    示例

    测试数据

    int1(INT)int2(INT)int3(INT)
    2559765

    测试语句

    SELECT int2 as aa
    FROM T1
    WHERE int1=255 AND int3=65;
    
    • 1
    • 2
    • 3

    测试结果

    aa(int)
    97

    BETWEEN AND

    功能描述

    BETWEEN操作符用于选取介于两个值之间的数据范围内的值。

    语法
    A BETWEEN B AND C
    
    • 1
    入参
    参数数据类型
    ADOUBLE,BIGINT,INT,VARCHAR,DATE,TIMESTAMP,TIME
    BDOUBLE,BIGINT,INT,VARCHAR,DATE,TIMESTAMP,TIME
    CDOUBLE,BIGINT,INT,VARCHAR,DATE,TIMESTAMP,TIME
    示例

    测试数据

    int1(INT)int2(INT)int3(INT)
    9080100
    11107

    测试语句

    SELECT int1 as aa
    FROM T1
    WHERE int1 BETWEEN int2 AND int3;
    
    • 1
    • 2
    • 3

    测试结果

    aa(int)
    90

    IS NOT FALSE

    功能描述

    如果A是TRUE,返回TRUE。如果A是FALSE,返回FALSE。

    语法
    A IS NOT FALSE
    
    • 1
    入参
    参数数据类型
    ABOOLEAN
    示例

    测试数据

    int1(INT)int2(INT)
    25597

    测试语句

    SELECT int2 as aa
    FROM T1
    WHERE int1=255 IS NOT FALSE;
    
    • 1
    • 2
    • 3

    测试结果

    aa(int)
    97

    IS NOT TRUE

    功能描述

    如果A是TRUE,返回FALSE。如果A是FALSE,返回TRUE。

    语法
    A IS NOT TRUE
    
    • 1
    入参
    参数数据类型
    ABOOLEAN
    示例

    测试数据

    int1(INT)int2(INT)
    25597

    测试语句

    SELECT int1 as aa
    FROM T1
    WHERE int1=25 IS NOT TRUE;
    
    • 1
    • 2
    • 3

    测试结果

    aa(int)
    97

    IS NOT NULL

    功能描述

    如果value为NULL时,则返回FALSE,否则返回TRUE

    语法
    value IS NOT NULL
    
    • 1
    入参
    参数数据类型
    value任意数据类型
    示例

    测试数据

    int1(INT)int2(VARCHAR)
    97NULL
    9ww123

    测试语句

    SELECT int1 as aa
    FROM T1
    WHERE int2 IS NOT NULL;            
    
    • 1
    • 2
    • 3

    测试结果

    aa(int)
    9

    IS NOT UNKNOWN

    功能描述

    当两边无法进行正常的逻辑判断时,即A值既不是TRUE也不是FALSE,返回 FALSE。可正常逻辑判断时,即A值为TRUE或者FALSE,返回 TRUE

    语法
    A IS NOT UNKNOWN
    
    • 1
    入参
    参数数据类型
    ABOOLEAN

    A为逻辑比较表达式,例如: 6<8。

    正常情况下数值型与数值型作逻辑比较时,A值为TRUE或者FALSE。当其中一个不为数值型数据类型时,就会出现无法比较的情况。

    示例

    测试数据

    int1(INT)int2(INT)
    25597

    测试语句

    SELECT int2 as aa
    FROM T1
    WHERE int1=25 IS NOT UNKNOWN;
    
    • 1
    • 2
    • 3

    测试结果

    aa(int)
    97

    IS NULL

    功能描述

    如果value为NULL时,则返回TRUE,否则返回FALSE

    语法
    value IS NULL
    
    • 1
    入参
    参数数据类型
    value任意数据类型
    示例

    测试数据

    int1(INT)int2(VARCHAR)
    97
    9www

    测试语句

    SELECT int1 as aa
    FROM T1
    WHERE int2 IS NULL;       
    
    • 1
    • 2
    • 3

    测试结果

    aa(int)
    97

    IS TRUE

    功能描述

    如果A是TRUE时,则返回TRUE。如果A是FALSE时,则返回FALSE。

    语法
    A IS TRUE
    
    • 1
    入参
    参数数据类型
    ABOOLEAN
    示例

    测试数据

    int1(INT)int2(INT)
    25597

    测试语句

    SELECT int2 as aa
    FROM T1
    WHERE int1=255 IS TRUE;             
    
    • 1
    • 2
    • 3

    测试结果

    aa(int)
    97

    IS UNKNOWN

    功能描述

    IS UNKNOWN通过逻辑判断关系,返回结果:

    • A(逻辑比较表达式)值既不是TRUE也不是FALSE,即无法进行正常的逻辑判断,返回 TRUE
    • A(逻辑比较表达式)值为TRUE或者FALSE,即可以进行正常逻辑判断,返回 FALSE

    正常情况下数值型与数值型进行逻辑比较时(例如6<>8),A值为TRUE或者FALSE。但是,当其中一个不为数值型数据类型时,就会出现无法比较的情况。IS UNKNOWN用于判断这种情况是否存在

    语法
    A IS UNKNOWN
    
    • 1
    入参
    参数数据类型
    ABOOLEAN
    示例

    测试数据

    int1(INT)int2(INT)
    25597

    测试语句

    SELECT int2 as aa
    FROM T1
    WHERE int1 > null IS UNKNOWN;
    
    • 1
    • 2
    • 3

    测试结果

    aa(int)
    97

    LIKE

    功能描述

    如果匹配,返回TRUE,否则返回FALSE。

    语法
    A LIKE B
    
    • 1
    入参
    参数数据类型
    AVARCHAR
    BVARCHAR
    示例

    测试数据

    int1(INT)VARCHAR2(VARCHAR)VARCHAR3(VARCHAR)
    90ss9797ss
    99ss107ho7

    测试语句

    SELECT int1 as aa
    FROM T1
    WHERE VARCHAR2 LIKE 'ss%';
    
    • 1
    • 2
    • 3

    测试结果

    aa(int)
    90
    99

    NOT

    功能描述

    如果A是TRUE,返回FALSE。如果A是FALSE,返回TRUE

    语法
    NOT
    
    • 1
    入参
    示例

    测试数据

    int2(INT)int3(INT)
    9765

    测试语句

    SELECT int2 as aa
    FROM T1
    WHERE NOT int3=62;
    
    • 1
    • 2
    • 3

    测试结果

    aa(int)
    97

    NOT BETWEEN AND

    功能描述

    NOT BETWEEN AND操作符用于选取不存在与两个值之间的数据范围内的值。

    语法
    A NOT BETWEEN B AND C
    
    • 1
    入参
    参数数据类型
    ADOUBLE、BIGINT、INT、VARCHAR、DATE、TIMESTAMP、TIME
    BDOUBLE、BIGINT、INT、VARCHAR、DATE、TIMESTAMP、TIME
    CDOUBLE、BIGINT、INT、VARCHAR、DATE、TIMESTAMP、TIME
    示例

    测试数据

    int1(INT)int2(INT)int3(INT)
    909780
    11107

    测试语句

    SELECT int1 as aa
    FROM T1
    WHERE int1 NOT BETWEEN int2 AND int3;
    
    • 1
    • 2
    • 3

    测试结果

    aa(int)
    11

    IN

    功能描述

    用来查找在参数中的记录。

    语法
    SELECT column_name(s)
    FROM table_name
    WHERE column_name IN (value1,value2,...)     
    
    • 1
    • 2
    • 3
    入参
    参数数据类型
    value1常数
    value2常数
    示例

    测试数据

    id(Int)LastName(Varchar)
    1Adams
    2Bush
    3Carter

    测试语句

    SELECT column_name(s)
    FROM table_name
    WHERE column_name IN (value1,value2,...)     
    
    • 1
    • 2
    • 3

    测试结果

    id(Int)LastName(Varchar)
    1Adams
    3Carter

    OR

    功能描述

    如果A和B中至少有一个为TRUE,则为TRUE,否则为FALSE。

    语法
     A OR B
    
    • 1
    入参
    int1(INT)int2(INT)int3(INT)
    2559765
    示例

    测试数据

    测试语句

    SELECT int2 as aa
    FROM T1
    WHERE int1=255 OR int3=65;
    
    • 1
    • 2
    • 3

    测试结果

    aa(int)
    97

    IS DISTINCT FROM

    功能描述
    • A和B的数据类型、值不完全相同则返回TRUE
    • A和B的数据类型、值都相同返回FALSE
    • 将空值视为相同。
    语法
    A IS DISTINCT FROM B
    
    • 1
    入参
    参数数据类型
    A任意数据类型
    B任意数据类型
    示例

    测试数据

    A(int)B(varchar)
    9797
    nullsss
    nullnull

    测试语句

    SELECT 
    A IS DISTINCT FROM B as 'result'
    FROM T1;
    
    • 1
    • 2
    • 3

    测试结果

    result(BOOLEAN)
    true
    true
    false

    IS NOT DISTINCT FROM

    功能描述

    IS DISTINCT FROM相反。

    • A和B的数据类型、值不完全相同则返回FALSE
    • A和B的数据类型、值都相同返回TRUE
    • 将空值视为相同。
    语法
    A IS NOT DISTINCT FROM B
    
    • 1
    入参
    参数数据类型
    A任意数据类型
    B任意数据类型
    示例

    测试数据

    • A(int)B(varchar)
      9797
      nullsss
      nullnull

    测试语句

    SELECT 
    A IS NOT DISTINCT FROM B as `result`
    FROM T1;      
    
    • 1
    • 2
    • 3

    测试结果

    result(BOOLEAN)
    false
    false
    true

    NOT IN

    功能描述

    用来查找在不在参数中的记录。

    语法
    SELECT column_name(s)
    FROM table_name
    WHERE column_name NOT IN (value1,value2,...)
    
    • 1
    • 2
    • 3
    入参
    参数数据类型
    value1常数
    value2常数
    示例

    测试数据

    id(Int)LastName(Varchar)
    1Adams
    2Bush
    3Carter

    测试语句

    SELECT * 
    FROM T1
    WHERE LastName NOT IN ('Adams','Carter') 
    
    • 1
    • 2
    • 3

    测试结果

    id(Int)LastName(Varchar)
    2Bush

    条件函数

    IS_DECIMAL

    功能描述

    str字符串如果可以转换为十进制数值返回TRUE;否则返回FALSE。

    语法
    BOOLEAN IS_DECIMAL(VARCHAR str)
    
    • 1
    入参
    参数数据类型
    strVARCHAR
    示例

    测试数据

    a(VARCHAR)b(VARCHAR)c(VARCHAR)d(VARCHAR)e(VARCHAR)f(VARCHAR)g(VARCHAR)
    1123211.44453asdnull

    测试语句

    SELECT 
    IS_DECIMAL(a) as boo1,
    IS_DECIMAL(b) as boo2,
    IS_DECIMAL(c) as boo3,
    IS_DECIMAL(d) as boo4,
    IS_DECIMAL(e) as boo5,
    IS_DECIMAL(f) as boo6,
    IS_DECIMAL(g) as boo7
    FROM T1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    测试结果

    boo1(BOOLEAN)boo2(BOOLEAN)boo3(BOOLEAN)boo4(BOOLEAN)boo5(BOOLEAN)boo6(BOOLEAN)boo7(BOOLEAN)
    truetruetruetruetruefalsefalse

    IS_DIGIT

    功能描述

    str中只包含数字则返回true,否则返回false。返回值为BOOLEAN类型。

    语法
    BOOLEAN IS_DIGIT(VARCHAR str)
    
    • 1
    入参
    参数数据类型
    strVARCHAR
    示例

    测试数据

    e(VARCHAR)f(VARCHAR)g(VARCHAR)
    3asdnull

    测试语句

    SELECT 
    IS_DIGIT(e) as boo1,
    IS_DIGIT(f) as boo2,
    IS_DIGIT(g) as boo3
    FROM T1
    
    • 1
    • 2
    • 3
    • 4
    • 5

    测试结果

    boo1(BOOLEAN)boo2(BOOLEAN)boo3(BOOLEAN)
    truefalsefalse

    IS_ALPHA

    功能描述

    如果str中只包含字母,则返回true,否则返回false。

    语法
    BOOLEAN IS_ALPHA(VARCHAR str) 
    
    • 1
    入参
    参数数据类型
    strVARCHAR
    示例

    测试数据

    e(VARCHAR)f(VARCHAR)g(VARCHAR)
    3asdnull

    测试语句

    SELECT IS_ALPHA(e) as boo1,IS_ALPHA(f) as boo2,IS_ALPHA(g) as boo3
    FROM T1;             
    
    • 1
    • 2

    测试结果

    boo1(BOOLEAN)boo2(BOOLEAN)boo3(BOOLEAN)
    falsetruefalse

    IF

    功能描述

    以testCondition的布尔值为判断标准,返回对应的参数值:

    • true:返回第2个参数valueTrue。
    • false:返回第3个参数valueFalseOrNull。

    testCondition为null时,判定结果为false。

    语法
    T if (BOOLEAN testCondition, T valueTrue, T valueFalseOrNull)
    
    • 1

    T代表任意类型的返回值。

    入参
    参数数据类型
    testConditionBOOLEAN
    valueTrue可以为任意类型,但valueTrue和valueFalseOrNull类型需保持一致。
    valueFalseOrNull可以为任意类型,但valueTrue和valueFalseOrNull类型需保持一致。
    示例

    测试数据

    int1(INT)int2(INT)str1(VARCHAR)str2(VARCHAR)
    12JackHarry
    12Jacknull
    12nullHarry

    测试语句

    SELECT IF(int1 < int2,str1, str2) as int1
    FROM T1
    
    • 1
    • 2

    测试结果

    int1(VARCHAR)
    Jack
    Jack
    null

    CASE WHEN

    功能描述

    如果表达式a为TRUE,则返回b;如果表达式a为FALSE、c为TRUE,则返回d;如果表达式a和c都为FALSE,则返回e。

    语法
    CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END
    
    • 1
    入参

    CASE WHEN返回常量字符串时,会在字符串后面补全空格。例如,当满足else条件时,返回值ios后面会多几个空格。

    case when device_type = 'android'
    then 'android' 
    else 'ios'
    end as os
    
    • 1
    • 2
    • 3
    • 4

    解决方法:

    • 利用TRIM函数去除空格,该示例中,涉及os的字段都改为TRIM(os)
    • 利用CAST函数去除空格,将常量字符串转为VARCHAR类型。
    示例

    测试数据

    device_type(VARCHAR)
    android
    ios
    win

    测试语句

    -- 用TRIM函数
    SELECT 
       trim(os), --添加trim。
       CHAR_LENGTH(trim(os)) --添加trim。
    from(
       SELECT
         case when device_type = 'android'
         then 'android'
         else 'ios' 
    end as os 
    FROM T1
    );
    
    -- 用CAST函数
    SELECT
     os, 
    CHAR_LENGTH(os) 
    from
    (SELECT 
     case when device_type = 'android'
     then cast('android' as varchar) --添加cast。
     else cast('ios' as varchar) --添加cast。
    end as os 
    FROM T1
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    测试结果

    os(VARCHAR)length(INT)
    android7
    ios3
    ios3

    COALESCE

    功能描述

    返回列表中第一个非null的值,返回值类型和参数类型相同。如果列表中所有的值都是null,则返回null。

    语法
    COALESCE(A,B,...)
    
    • 1
    入参
    参数数据类型
    A任意数据类型
    B任意数据类型
    示例

    测试数据

    var1(VARCHAR)var2(VARCHAR)
    null30

    测试语句

    SELECT COALESCE(var1,var2) as aa
    FROM T1
    
    • 1
    • 2

    测试结果

    aa(VARCHAR)
    30

    NULLIF

    功能描述

    两个参数的值相同,则返回null,值不同则返回第一个参数的值。

    语法
    NULLIF(A,B)
    
    • 1
    入参
    参数数据类型
    AINT
    BINT
    示例

    测试数据

    var1(INT)var2(INT)
    3030

    测试语句

    SELECT NULLIF(var1,var2) as aa
    FROM T1
    
    • 1
    • 2

    测试结果

    aa(INT)
    null

    表值函数

    STRING_SPLIT

    功能描述

    根据指定的分隔符将目标字符串拆分为子字符串行,返回子字符串的单列的表。需要注意以下几点:

    • 如果目标字符串为NULL,则STRING_SPLIT表值函数返回一个空行。
    • 如果目标字符串包含两个或多个连续出现的分隔符时,则返回长度为零的空子字符串。
    • 如果目标字符串未包含指定分隔符,则只返回目标字符串。
    语法
    string_split(string, separator)
    
    • 1
    入参
    参数数据类型说明
    stringVARCHAR目标字符串
    separatorVARCHAR指定的分隔符

    分隔符separator暂不支持多字符串形式,只支持单个字符串形式。

    示例

    测试数据

    d(varchar)s(varchar)
    abc-bcd-
    hhh-

    测试语句

    select d,v 
    from T1, 
    lateral table(string_split(d, s)) as T(v);
    
    • 1
    • 2
    • 3

    测试结果

    d(varchar)v(varchar)
    abc-bcdabc
    abc-bcdbcd
    hhhhhh

    GENERATE_SERIES

    功能描述

    生成一串连续的数值,分别为 from, from+1, from+2, … , to-1。

    语法
    GENERATE_SERIES(INT from, INT to)
    
    • 1
    入参
    参数数据类型
    fromINT类型,指定下界,包含下界值。
    toINT类型,指定上界,不包含上界值。
    示例

    测试数据

    s(INT)e(INT)
    13
    -21

    测试语句

    SELECT s, e, v 
    FROM T1, lateral table(GENERATE_SERIES(s, e)) 
    as T(v)
    
    • 1
    • 2
    • 3

    测试结果

    s(INT)e(INT)v(INT)
    131
    132
    -21-2
    -21-1
    -21-0

    JSON_TUPLE

    功能描述

    从JSON字符串中取出各路径字符串所表示的值。

    语法
    JSON_TUPLE(str, path1, path2 ..., pathN)     
    
    • 1
    入参
    参数数据类型说明
    strVARCHARJSON字符串
    path1~pathNVARCHAR表示路径的字符串,前面不需要$
    示例

    测试数据

    d(VARCHAR)s(VARCHAR)
    {“qwe”:“asd”,“qwe2”:“asd2”,“qwe3”:“asd3”}qwe3
    {“qwe”:“asd4”,“qwe2”:“asd5”,“qwe3”:“asd3”}qwe2

    测试语句

    SELECT d, v 
    FROM T1, lateral table(JSON_TUPLE(d, 'qwe', s))
    AS T(v);   
    
    • 1
    • 2
    • 3

    测试结果

    d(VARCHAR)v(VARCHAR)
    {“qwe”:“asd”,“qwe2”:“asd2”,“qwe3”:“asd3”}asd
    {“qwe”:“asd”,“qwe2”:“asd2”,“qwe3”:“asd3”}asd3
    {“qwe”:“asd4”,“qwe2”:“asd5”,“qwe3”:“asd3”}asd4
    {“qwe”:“asd4”,“qwe2”:“asd5”,“qwe3”:“asd3”}asd5

    MULTI_KEYVALUE

    功能描述

    解析str字符串中的key-value对,匹配有split1和split2的key-value对,并返回参数列表里key_name1,key_name2等对应的value值列表。key_name值不存在时,对应的value值是null。

    语法
    MULTI_KEYVALUE(VARCHAR str, VARCHAR split1, VARCHAR split2, VARCHAR key_name1, VARCHAR key_name2, ...)
    
    • 1
    入参
    参数数据类型说明
    strVARCHAR字符串中的key-value(kv)对。
    split1VARCHARkv对的分隔符。当split1为null,表示按照whitespace作为kv对的分割符。当split1的长度>1时,split1仅表示分隔符的集合,每个字符都表示一个有效的分隔符。
    split2VARCHARkv的分隔符。当split2为null,表示按照whitespace作为kv的分割符。当split2的长度>1时,split2仅表示分隔符的集合,每个字符都表示一个有效的分隔符。
    key_name1, key_name2, …VARCHAR需要获取value的key值列表。
    示例

    测试数据

    str(VARCHAR)split1(VARCHAR)split2(VARCHAR)key1(VARCHAR)key2(VARCHAR)
    k1=v1;k2=v2;=k1k2
    null;=k1k2
    k1:v1;k2:v2;:k1k3
    k1:v1;k2:v2;=k1k2
    k1:v1;k2:v2,:k1k2
    k1:v1;k2=v2;:k1k2
    k1:v1abck2:v2cab:k1k2
    k1:v1;k2=v2;:=k1k2
    k1:v1 k2:v2null:k1k2
    k1 v1;k2 v2;nullk1k2

    测试语句

    SELECT c1, c2 
    FROM T1, lateral table(MULTI_KEYVALUE(str, split1, split2, key1, key2)) 
    as T(c1, c2)
    
    • 1
    • 2
    • 3

    测试结果

    c1(VARCHAR)c2(VARCHAR)
    v1v2
    nullnull
    v1null
    nullnull
    nullnull
    v1null
    v1v2
    v1v2
    v1v2
    v1v2

    类型转换函数

    CAST

    功能描述

    将A值转换为给定类型。如果转换后的类型和目标表字段类型不匹配时,会出现类似Insert into: Query result and target table 'test_result' field type(s) not match. 的报错。

    语法
    CAST(A AS type)    
    
    • 1
    入参

    A:任意类型数据。

    示例

    测试数据

    var1(VARCHAR)var2(INT)
    100030

    测试语句

    SELECT CAST(var1 AS INT) as aa
    FROM T1;             
    
    • 1
    • 2

    测试结果

    aa(INT)
    1000

    聚合函数

    AVG

    功能描述

    返回指定表达式中所有值的平均值。返回值默认为DOUBLE类型,如果您的结果表字段为非DOUBLE类型,您需要使用CAST进行转化。

    语法
    AVG(A)
    
    • 1
    入参
    参数数据类型
    ATINYINT、SMALLINT、INT、BIGINT、FLOAT、DECIMAL和DOUBLE。
    示例

    测试数据

    var1(INT)var2(INT)
    430
    630

    测试语句

    SELECT AVG(var1) as aa
    FROM T1;     
    
    • 1
    • 2

    测试结果

    aa(INT)
    5

    CONCAT_AGG

    功能描述

    连接对应字段的字符串,默认连接符\n,连接完成后新生成的字符串。返回值VARCHAR类型。

    语法
    CONCAT_AGG([linedelimiter,] value ) 
    
    • 1
    入参
    参数数据类型
    linedelimiter目前只支持字符串常量。可选。
    示例

    测试数据

    b(VARCHAR)c(VARCHAR)
    Himilk
    Himilk
    Himilk
    Himilk
    Himilk
    Himilk
    Hellocola
    Hellocola
    Happysuda
    Happysuda

    测试语句

    SELECT 
          b,
          concat_agg(c) as var1, 
          concat_agg('-', c) as var2
    FROM MyTable
    GROUP BY b;         
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    测试结果

    b (VARCHAR)var1(VARCHAR)var2(VARCHAR)
    Himilk
    milk
    milk
    milk
    milk
    milk
    milk-milk-milk-milk-milk-milk
    Hellocola
    cola
    cola-cola
    Happysuda
    suda
    suda-suda

    COUNT

    功能描述

    返回输入列的数量。

    语法
    COUNT(A)
    
    • 1
    入参
    参数数据类型
    A支持TINYINT、SMALLINT、INT、BIGINT、FLOAT、DECIMAL、DOUBLE、BOOLEAN和VARCHAR类型。
    不支持DATE、TIME、TIMESTAMP和VARBINARY类型。
    示例

    测试数据

    var1(VARCHAR)
    1000
    100
    10
    1

    测试语句

    SELECT COUNT(var1) as aa
    FROM T1;     
    
    • 1
    • 2

    测试结果

    aa(BIGINT)
    4

    FIRST_VALUE

    功能描述

    获取数据流的第1条非null数据。根据order判定FIRST_VALUE所在的行,取order值最小的记录作为FIRST_VALUE。

    语法
    T FIRST_VALUE( T value )
    T FIRST_VALUE( T value, BIGINT order )
    
    • 1
    • 2
    入参
    参数数据类型
    value任意参数类型,但输入参数只能为同一种类型。
    orderBIGINT
    示例

    测试数据

    a(BIGINT)b(INT)c(VARCHAR)
    1L1“Hello”
    2L2“Hello”
    3L3“Hello”
    4L4“Hello”
    5L5“Hello”
    6L6“Hello”
    7L7“Hello World”
    8L8“Hello World”
    20L20“Hello World”

    测试语句

    SELECT c,
     FIRST_VALUE(b) 
    OVER (
    PARTITION BY c 
    ORDER BY PROCTIME() RANGE UNBOUNDED PRECEDING
    ) AS var1
    FROM T1;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    测试结果

    c(VARCHAR)var1(BIGINT)
    “Hello”1
    “Hello”1
    “Hello”1
    “Hello”1
    “Hello”1
    “Hello”1
    “Hello World”7
    “Hello World”7
    “Hello World”7

    LAST_VALUE

    功能描述

    获取数据流的最后1条非NULL数据。根据ORDER判定LAST_VALUE所在的行,取ORDER值最大的记录作为LAST_VALUE。

    语法
    T LAST_VALUE(T value)
    T LAST_VALUE(T valueBIGINT order)
    
    • 1
    • 2
    入参
    参数数据类型
    value任意参数类型
    orderBIGINT

    所有输入参数需要为相同的数据类型。

    示例

    测试数据

    a(BIGINT)b(INT)c(VARCHAR)
    1L1“Hello”
    2L2“Hello”
    3L3“Hello”
    4L4“Hello”
    5L5“Hello”
    6L6“Hello”
    7L7“Hello World”
    8L8“Hello World”
    20L20“Hello World”

    测试语句

    SELECT c,
     LAST_VALUE(b)
    OVER (
    PARTITION BY c 
    ORDER BY PROCTIME() RANGE UNBOUNDED PRECEDING
    ) AS var1
    FROM T1;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    测试结果

    c(VARCHAR)var1(INT)
    “Hello”1
    “Hello”2
    “Hello”3
    “Hello”4
    “Hello”5
    “Hello”6
    “Hello World”7
    “Hello World”8
    “Hello World”20

    MAX

    功能描述

    返回所有输入值的最大值。

    语法
    MAX(A)
    
    • 1
    入参
    参数数据类型
    A支持TINYINT,SMALLINT、INT、BIGINT、FLOAT、DECIMAL、DOUBLE、BOOLEAN和VARCHAR类型。
    不支持DATE、TIME、TIMESTAMP和VARBINARY类型。
    示例

    测试数据

    var1(INT)
    4
    8

    测试语句

    SELECT MAX(var1) as aa
    FROM T1;
    
    • 1
    • 2

    测试结果

    aa(INT)
    8

    MIN

    功能描述

    返回所有输入值的最小值。

    语法
    MIN(A)      
    
    • 1
    入参
    参数数据类型
    A支持TINYINT、SMALLINT、INT、BIGINT、FLOAT、DECIMAL、DOUBLE、BOOLEAN和VARCHAR类型。
    不支持DATE、TIME、TIMESTAMP和VARBINARY类型。
    示例

    测试数据

    var1(INT)
    4
    8

    测试语句

    SELECT MIN(var1) as aa
    FROM T1;
    
    • 1
    • 2

    测试结果

    aa(INT)
    4

    SUM

    功能描述

    返回所有输入值的数值之和。

    语法
    SUM(A)
    
    • 1
    入参
    参数数据类型
    ATINYINT、SMALLINT、INT、BIGINT、FLOAT、DECIMAL和DOUBLE。
    示例

    测试数据

    var1(INT)
    4
    4

    测试语句

    SELECT sum(var1) as aa
    FROM T1;
    
    • 1
    • 2

    测试结果

    aa(INT)
    8

    VAR_POP

    功能描述

    返回所有输入值的方差。

    语法
    T VAR_POP(T value)
    
    • 1
    入参
    参数数据类型
    value数值型,可以为BIGINT和DOUBLE等类型。
    示例

    测试数据

    a(BIGINT)c(VARCHAR)
    2900Hi
    2500Hi
    2600Hi
    3100Hello
    11000Hello

    测试语句

    SELECT 
    VAR_POP(a) as `result`,
    c
    FROM MyTable
    GROUP BY c;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    测试结果

    result(BIGINT)c
    28889Hi
    15602500Hello

    STDDEV_POP

    功能描述

    返回数值的总体标准差。

    语法
    T STDDEV_POP(T value)
    
    • 1
    入参
    参数数据类型
    valueBIGINT或DOUBLE
    示例

    测试数据

    a(DOUBLE)c(VARCHAR)
    0Hi
    1Hi
    2Hi
    3Hi
    4Hi
    5Hi
    6Hi
    7Hi
    8Hi
    9Hi

    测试语句

    SELECT c, STDDEV_POP(a) as dou1
    FROM MyTable
    GROUP BY c;
    
    • 1
    • 2
    • 3

    测试结果

    c(VARCHAR)dou1(DOUBLE)
    Hi2.8722813232690143

    其他函数

    UUID

    功能描述

    返回通用唯一标识字符。

    语法
    VARCHAR UUID()
    
    • 1
    入参

    示例

    测试语句

    SELECT uuid() as `result`
    FROM T1
    
    • 1
    • 2

    测试结果

    result(VARCHAR)
    a364e414-e68b-4e5c-9166-65b3a153e257

    DISTINCT

    功能描述

    DISTINCT用于SELECT语句中,可以对查询结果进行去重。

    语法
    SELECT DISTINCT expressions 
    FROM tables;
    
    • 1
    • 2
    入参
    • DISTINCT必须放到开始位置。和其他函数一起使用时,DISTINCT也必须放到开始位置,例如,concat_agg(DISTINCT ',' ,device_id)
    • expressions是一个或多个expression,可以是具体的column,也可以是function等任何合法表达式。
    示例

    测试数据

    FirstNameLastName
    SUNSHENGRAN
    SUNJINCHENG
    SUNSHENGRAN
    SUNSHENGRAN

    测试语句

    CREATE TABLE distinct_tab_source(
     FirstName VARCHAR,
     LastName VARCHAR
    )WITH(
     type='random'
    ) ;
    
    CREATE TABLE distinct_tab_sink(
     FirstName  VARCHAR,
     LastName VARCHAR
    )WITH(
     type = 'print'
    ) ;
    
    INSERT INTO distinct_tab_sink
    SELECT DISTINCT FirstName, LastName --按照FirstName和LastName两个列进行去重。
    FROM distinct_tab_source;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    测试结果

    img

    SUNS,HENGRANSUN,SHENGRAN两条记录并没有被去重,说明DISTINCT FirstName, LastName是对两个字段分别处理的,而不是Concat到一起再进行去重。

    DISTINCT的等效写法

    在SQL中利用GROUP BY语句也可以到达和DISTINCT类似的去重效果。GROUP BY语法如下。

    SELECT expressions
    FROM tables
    GROUP BY expressions
    ;        
    
    • 1
    • 2
    • 3
    • 4

    通过多路输出的方式编写的和DISTINCT示例等效的SQL,示例如下。

    CREATE TABLE distinct_tab_source(
     FirstName VARCHAR,
     LastName VARCHAR
    )WITH(
     type='random'
    );
    
    CREATE TABLE distinct_tab_sink(
     FirstName VARCHAR,
     LastName VARCHAR
    )WITH(
     type = 'print'
    );
    
    CREATE TABLE distinct_tab_sink2(
     FirstName VARCHAR,
     LastName VARCHAR
    )WITH(
     type = 'print'
    );
    
    INSERT INTO distinct_tab_sink
    SELECT DISTINCT FirstName, LastName --按照FirstName和LastName两个列进行去重。
    FROM distinct_tab_source;
    
    INSERT INTO distinct_tab_sink2
    SELECT FirstName, LastName
    FROM distinct_tab_source
    GROUP BY FirstName, LastName; --按照FirstName和LastName两个列进行去重。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    DISTINCT在聚合函数COUNT中的作用

    DISTINCT能使聚合函数COUNT统计去重后的计数。

    COUNT(DISTINCT expression)
    
    • 1

    expression目前只支持一个表达式。

    COUNT DISTINCT语法示例

    CREATE TABLE distinct_tab_source(
     FirstName VARCHAR,
     LastName VARCHAR
    )WITH(
     type='random'
    );
    
    CREATE TABLE distinct_tab_sink(
     cnt BIGINT,
     distinct_cnt BIGINT
    )WITH(
     type = 'print'
    ) ;
    
    INSERT INTO distinct_tab_sink
        SELECT 
          COUNT(FirstName),  --不去重。
          COUNT(DISTINCT FirstName)  --按照FirstName去重。
        FROM distinct_tab_source;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
  • 相关阅读:
    【基本数据结构】平衡二叉树
    Flask 上传文件,requests通过接口上传文件
    Real-Time Rendering——9.13 Blending and Filtering Materials混合和过滤材料
    【Android 系统】recovery字体大小修改
    Kafka之Broker原理
    第十二章 文件的上传和下载
    【数据结构与算法笔试】京东0928秋招笔试
    软件设计不是CRUD(7):低耦合模块设计实战——组织机构模块(中)
    neo4j图数据库基本概念
    Java集合进阶
  • 原文地址:https://blog.csdn.net/shenglishuguang/article/details/125481466