testbook

OPERATORS

  • 日期函数
  • add_months, extract, from_unixtime, to_unix_timestamp, unix_timestamp, to_timestamp, to_date, tdh_todate, day, dayofmonth, dayofyear, quater, hour, minute, second, weekofyear, datediff, date_add, date_sub, date_format, str_to_date, sysdate
    函数名返回类型描述
    add_months(date,integer) String 返回date加上integer个月后的日期。
    说明与解释:
           参数date应该是datetime value,或者可以隐性转换成DATE类型;参数integer应该是整数型,或者可以隐形转换成整数型。

    举例:
    SELECT add_months('201501',1) FROM src LIMIT 1;
    Result: 201502
    


    函数名返回类型描述
    extract(date,integer) String 抽取日期类型中的年/月/日
    说明与解释:
           参数date应该是datetime value,或者可以隐性转换成DATE类型;参数integer应该是整数型,或者可以隐形转换成整数型。

    举例:
    SELECT EXTRACT(year from '2015-01-15') FROM src LIMIT 1;
    Result: 2015
    


    函数名返回类型描述
    to_unix_timestamp(date[, pattern]) BigInt 把日期格式转化为UNIX时间戳
    说明与解释:
           返回从"1970-01-01 8:00:00"开始,到指定时间为止的秒数。 参数一最好是date类型,也支持其他字符类型; 参数二可选,作用是指定参数一的格式,如'yyyy-MM-dd HH:mm:ss',如果参数二指定的格式和参数一不匹配,则返回null。

    举例:
    select to_unix_timestamp("2015-01-15",'yyyy-MM-dd') from src limit 1;
    Result: 1421251200
    


    函数名返回类型描述
    unix_timestamp([date[, pattern]]) BigInt 把日期格式转化为UNIX时间戳
    说明与解释:
           返回从"1970-01-01 8:00:00"开始,到指定时间为止的秒数。 如果不加参数,则返回当前系统时间的UNIX时间戳。 参数一最好是date类型,也支持其他字符类型; 参数二可选,作用是指定参数一的格式,如'yyyy-MM-dd HH:mm:ss',如果参数二指定的格式和参数一不匹配,则返回null。

    举例:
    select unix_timestamp("2015-01-15",'yyyy-MM-dd') from src limit 1;
    Result: 1421251200
    


    函数名返回类型描述
    to_timestamp([date[, pattern]]) BigInt 把日期格式转化为UNIX时间戳
    说明与解释:
           和unix_timestamp用法完全一致

    举例:
    select to_timestamp("2015-01-15",'yyyy-MM-dd') from src limit 1;
    Result: 1421251200
    


    函数名返回类型描述
    from_unixtime(unix_time[, format]) String 把UNIX时间戳转化为时间格式
    说明与解释:
           参数一是long类型,或者可以隐性转换成long类型的UNIX时间戳; 参数二可选,是字符类型,指定了返回的时间格式。当没有参数二时,返回标准的'yyyy-MM-dd HH:mm:ss'时间格式。

    举例:
    SELECT from_unixtime(0, 'yyyy-MM-dd HH:mm:ss') FROM src LIMIT 1;
    Result: 1970-01-01 08:00:00
    


    函数名返回类型描述
    to_date(date) String 把字符串或者日期字符转化为yyyy-MM-dd的日期格式
    说明与解释:
           参数date必须是字符类型或者是日期类型、Timestamp类型,否则返回为NULL。

    举例:
    SELECT to_date('2015-01-15 04:17:52') FROM src LIMIT 1;
    Result: 2015-01-15
    


    函数名返回类型描述
    tdh_todate(date[,originformat,targetformat]) String 把字符按照给定的格式,转化为标准日期格式,或者指定格式
    说明与解释:
           参数date必须是字符类型或者是日期类型、Timestamp类型,否则返回为NULL。如果只提供日期一个参数,系统会自动识别yyyyMMdd、yyyy-MM-dd、yyyy/MM/dd格式的字符或日期,然后返回yyyyMMdd格式的日期字符,其他返回NULL。当指定了第二个可选参数(String类型的原始日期格式)时,会根据指定的格式去解析日期,如果格式和日期参数不匹配也返回NULL,建议手动指定第二个参数。第三个可选参数也是String类型,指定返回的日期格式,如yyyy*MM*dd。

    举例:
    SELECT EXTRACT(year from '2015-01-15') FROM src LIMIT 1;
    Result: 2015
    


    函数名返回类型描述
    day(date) Int 返回指定时间是该月的第几天
    说明与解释:
           参数date必须是字符类型或者是日期类型、Timestamp类型,否则返回为NULL。另外date必须是yyyy-MM-dd或者yyyy-MM-dd HH:MM:SS的格式,否则也返回NULL。

    举例:
    SELECT day('2015-01-15') FROM src LIMIT 1;
    Result: 15
    


    函数名返回类型描述
    dayofmonth(date) Int 返回指定时间是该月的第几天
    说明与解释:
           用法和函数day完全一致。

    举例:
    SELECT dayofmonth('2015-01-15') FROM src LIMIT 1;
    Result: 15
    


    函数名返回类型描述
    dayofyear(date[,formatt]) Int 返回指定日期是该年的第几天
    说明与解释:
           参数date必须是字符类型或者是日期类型、Timestamp类型,否则返回为NULL。如果只提供日期一个参数,系统会自动识别yyyyMMdd、yyyy-MM-dd、yyyy/MM/dd三种格式的字符或日期,然后返回日期是该年的第几天,其他格式返回NULL。当指定了第二个可选参数(String类型的日期格式)时,会根据指定的格式去解析日期,如果格式和日期参数不匹配也返回NULL,建议手动指定第二个参数。

    举例:
    SELECT dayofyear('2015|01|15','yyyy|MM|dd') FROM src LIMIT 1;
    Result: 166
    


    函数名返回类型描述
    quater(date[,formatt]) Int 返回指定日期是该年的第几季度
    说明与解释:
           参数date必须是字符类型或者是日期类型、Timestamp类型,否则返回为NULL。如果只提供日期一个参数,系统会自动识别yyyyMMdd、yyyy-MM-dd、yyyy/MM/dd三种格式的字符或日期,然后返回日期是该年的第几季度,其他格式返回NULL。当指定了第二个可选参数(String类型的日期格式)时,会根据指定的格式去解析日期,如果格式和日期参数不匹配也返回NULL,建议手动指定第二个参数。

    举例:
    SELECT quater('2015|06|15','yyyy|MM|dd') FROM src LIMIT 1;
    Result: 2
    


    函数名返回类型描述
    hour(date) Int 返回指定时间是该日的第几个小时
    说明与解释:
           参数date必须是字符类型或者是日期类型、Timestamp类型,同时必须是是yyyy-MM-dd或者yyyy-MM-dd HH:MM:SS的格式,否则返回NULL。

    举例:
    SELECT hour('2015-01-30 22:58:59') FROM src LIMIT 1;
    Result: 22
    


    函数名返回类型描述
    minute(date) Int 返回指定时间是该小时的第多少分钟
    说明与解释:
           参数date必须是字符类型或者是日期类型、Timestamp类型,同时必须是是yyyy-MM-dd或者yyyy-MM-dd HH:MM:SS的格式,否则返回NULL。

    举例:
    SELECT minute('2015-01-30 22:58:59') FROM src LIMIT 1;
    Result: 58
    


    函数名返回类型描述
    second(date) Int 返回指定时间是该分钟的第多少秒
    说明与解释:
           参数date必须是字符类型或者是日期类型、Timestamp类型,同时必须是是yyyy-MM-dd或者yyyy-MM-dd HH:MM:SS的格式,否则返回NULL。

    举例:
    SELECT second('2015-01-30 22:58:59') FROM src LIMIT 1;
    Result: 59
    


    函数名返回类型描述
    weekofyear(date) Int 返回指定日期是该年的第几周
    说明与解释:
           参数date必须是字符类型或者是日期类型、Timestamp类型,同时必须是是yyyy-MM-dd或者yyyy-MM-dd HH:MM:SS的格式,否则返回NULL。我们把周一作为一周的开始,同时第一个有着4天及以上的周,是第一周。

    举例:
    SELECT weekofyear('2015-01-15 22:58:59') FROM src LIMIT 1;
    Result: 3
    


    函数名返回类型描述
    datediff(date1, date2) Int 返回两个日期的相差天数
    说明与解释:
           参数date1/date2必须是字符类型或者是日期类型、Timestamp类型,同时必须是是yyyy-MM-dd或者yyyy-MM-dd HH:MM:SS的格式,否则返回NULL。返回值为正说明date1较晚。

    举例:
    SELECT datediff('2015-01-15', '2015-02-08') FROM src LIMIT 1;
    Result: -24
    


    函数名返回类型描述
    date_add(start_date, num_days) Int 返回指定时间之后的第num_days天的时间
    说明与解释:
           参数start_date必须是字符类型或者是日期类型、Timestamp类型,同时必须是是yyyy-MM-dd或者yyyy-MM-dd HH:MM:SS的格式,否则返回NULL。参数num_days必须是Int类型或者可以隐式转化为Int类型

    举例:
    SELECT date_add('2015-01-15', 1) FROM src LIMIT 1;
    Result: 2015-01-16
    


    函数名返回类型描述
    date_sub(start_date, num_days) Int 返回指定时间之前的第num_days天的时间
    说明与解释:
           参数start_date必须是字符类型或者是日期类型、Timestamp类型,同时必须是是yyyy-MM-dd或者yyyy-MM-dd HH:MM:SS的格式,否则返回NULL。参数num_days必须是Int类型或者可以隐式转化为Int类型

    举例:
    SELECT date_sub('2015-01-15', 1) FROM src LIMIT 1;
    Result: 2015-01-14
    


    函数名返回类型描述
    date_format(dateText,pattern) DATE 把时间转化为指定的格式
    说明与解释:
           参数date必须是'yyyy-MM-dd HH:mm:ss'的字符或者Date、Timestamp格式,否则返回值为NULL;参数二必须是字符格式,指定了返回日期的格式。

    举例:
    select date_format('2015-01-15 00:00:00','yyyyMMdd') from src limit 1;
    Result: 20150115
    


    函数名返回类型描述
    str_to_date(dateText,pattern) String 根据指定的格式来解析日期并转化为标准格式
    说明与解释:
           参数date必须是字符或者Date、Timestamp格式,否则返回值为NULL;参数二必须是字符格式,指定了dateText的日期格式。最后返回的是标准的'yyyy-MM-dd HH:mm:ss'格式的时间。

    举例:
    select str_to_date('2015|01|15','yyyy|MM|dd') from src limit 1;
    Result: 2015-01-15 00:00:00
    


    函数名返回类型描述
    sysdate String 返回当前系统时间
    说明与解释:
           返回的时间是'yyyy-MM-dd HH:mm:ss'格式

    举例:
    SELECT EXTRACT(year from '2009-30-07') FROM src LIMIT 1;
    Result: 2009
    


  • 关系运算符(13) <, <=, <=>, <>, =, ==, >, >=, isnull, isnotnull, like, rlike, regexp
  • 操作符返回类型描述
    A < B Boolean 判断A是否小于B
    说明与解释:
           A和B可以为任何基本类型,如果A小于B,则返回TRUE,否则返回FALSE。如果A或B值为”NULL”,结果返回”NULL”。

    举例:
    select 1 < 2 from src limit 1;
    Result: true
    


    操作符返回类型描述
    A > B Boolean 判断A是否大于B
    说明与解释:
           A和B可以为任何基本类型,如果A大于B,则返回TRUE,否则返回FALSE。如果A或B值为”NULL”,结果返回”NULL”。

    举例:
    select 1 > 2 from src limit 1;
    Result: false
    


    操作符返回类型描述
    A = B Boolean 判断A是否等于B
    说明与解释:
           A和B可以为任何基本类型,如果A与B相等,则返回TRUE,否则返回FALSE。

    举例:
    select 1 = 1 from src limit 1;
    Result: true
    


    操作符返回类型描述
    A == B Boolean 判断A是否等于B
    说明与解释:
           和 = 用法一致

    举例:
    select 1 == 1 from src limit 1;
    Result: true
    


    操作符返回类型描述
    A >= B Boolean 判断A是否大于或者等于B
    说明与解释:
           A和B可以为任何基本类型,如果A大于或者等于B,则返回TRUE,否则返回FALSE。如果A或B值为”NULL”,结果返回”NULL”。

    举例:
    select 1 >= 2 from src limit 1;
    Result: false
    


    操作符返回类型描述
    A <= B Boolean 判断A是否小于或者等于B
    说明与解释:
           A和B可以为任何基本类型,如果A小于或者等于B,则返回TRUE,否则返回FALSE。如果A或B值为”NULL”,结果返回”NULL”。

    举例:
    select 1 <= 2 from src limit 1;
    Result: false
    


    操作符返回类型描述
    A <> B Boolean 判断A是否不等于B
    说明与解释:
           A和B可以为任何基本类型,如果A不等于B返回TRUE,否则返回FALSE。如果A或B值为”NULL”,结果返回”NULL”。

    举例:
    select 1 <> 2 from src limit 1;
    Result: true
    


    操作符返回类型描述
    A <=> B Boolean 判断A是否等于B
    说明与解释:
           A和B可以为任何基本类型,当A和B都不为null的时候,用法和 "=" 一致, 但是当A和B都为NULL的时候返回true,而A和B只有一个为NULL的时候返回NULL。

    举例:
    select 1 = 1 from src limit 1;
    Result: true
    


    操作符返回类型描述
    A IS NULL Boolean 判断A是否为空
    说明与解释:
           A可以为任何基本类型,如果A为空,则返回TRUE,否则返回FALSE。

    举例:
    select 1 IS NULL from src limit 1;
    Result: false
    


    操作符返回类型描述
    A is not null Boolean 判断A是否等于B
    说明与解释:
           A和B可以为任何基本类型,如果A与B相等,则返回TRUE,否则返回FALSE。

    举例:
    select 1 = 1 from src limit 1;
    Result: true
    


    操作符返回类型描述
    A like B Boolean 判断A是否满足sql中的模式B
    说明与解释:
           如果A或B值为”NULL”,结果返回”NULL”。字符串A与B通过sql进行匹配,如果相符返回TRUE,不符返 回FALSE。B字符串中的””代表任一字符,”%”则代表多个任意字符。例如: (‘foobar’ like ‘foo’)返回FALSE, ( ‘foobar’ like ‘foo ’或者 ‘foobar’ like ‘foo%’)则返回TURE

    举例:
    select 'foobar' like 'foo_' from src limit 1;
    Result: true
    


    操作符返回类型描述
    A rlike B Boolean 判断A是否符合正则表达式B
    说明与解释:
           如果A或B值为”NULL”,结果返回”NULL”。字符串A与B通过java进行匹配,如果相符返回TRUE,不符返 回FALSE。例如:( ‘foobar’ rlike ‘foo’)返回FALSE,(’foobar’rlike ‘^f.r$’ )返回TRUE。

    举例:
    select 'foobar' rlike 'foo
    ' from src limit 1; Result: true

    操作符返回类型描述
    A regexp B Boolean 判断A是否符合正则表达式B
    说明与解释:
           用法和 "rlike" 完全一致

    举例:
    select 'foobar' regexp 'foo*' from src limit 1;
    Result: true
    


  • 算术运算符(9)
  • +, -, *, /, %, &, |, ^, ~

    操作符返回类型描述
    A + B A和B的公有类型 返回A和B的和
    说明与解释:
           A和B可以为除了Boolean以外,任何基本类型。如果A和B都是Interval,可隐式转化规则为:tinyint->Int->bigint ->Float->Double,也就是说Int和Float的相加结果为Float。另外String和任何Interval相加结果,如果String可以转化为Double类型,则结果是double类型,否则结果为NULL,比如1+'1|1'的结果为NULL,1+'1'的结果则是2.0。

    举例:
    select 1 + 0.1 from src limit 1;
    Result: 1.1
    


    操作符返回类型描述
    A - B A和B的公有类型 返回A和B的差
    说明与解释:
           A和B可以为除了Boolean以外,任何基本类型。如果A和B都是Interval,可隐式转化规则为:tinyint->Int->bigint ->Float->Double,也就是说Int和Float的相减结果为Float。另外String和任何Interval相减结果,如果String可以转化为Double类型,则结果是double类型,否则结果为NULL,比如1-'1|1'的结果为NULL,1-'1'的结果则是0.0。

    举例:
    select 1 - 0.1 from src limit 1;
    Result: 0.9
    


    操作符返回类型描述
    A * B A和B的公有类型 返回A和B的和
    说明与解释:
           A和B可以为除了Boolean以外,任何基本类型。如果A和B都是Interval,可隐式转化规则为:tinyint->Int->bigint ->Float->Double,也就是说Int和Float的相乘结果为Float。另外String和任何Interval相乘结,如果String可以转化为Double类型,则结果是double类型,否则结果为NULL,比如1 * '1|1'的结果为NULL,1 * '1'的结果则是1.0。需要说明的是,如果乘法造成溢出,将选择更高的类型。

    举例:
    select 1 * 0.1 from src limit 1;
    Result: 0.1
    


    操作符返回类型描述
    A / B A和B的公有类型 返回A和B的和
    说明与解释:
           A和B可以为任何数字类型或者字符串类型。如果A和B都是数字类型,则返回double类型。另外字符类型和数字类型相除,字符类型如果可以转化为double类型则结果也是double类型,否则返回NULL。

    举例:
    select 1 / 1 from src limit 1;
    Result: 1.0
    


    操作符返回类型描述
    A % B A和B的公有类型 返回A被B除的余数
    说明与解释:
           A和B可以为任何数字类型或者字符串类型。如果A和B都是数字类型,则返回二者的共同类型。如果是字符类型和数字类型,字符类型如果可以转化为double类型则结果也是double类型,否则返回NULL。

    举例:
    select '10' % 3 from type limit 1;
    Result: 1.0
    


    操作符返回类型描述
    A & B A和B的公有类型 返回A和B的二进制值的按位与结果
    说明与解释:
           A和B可以为TinyInt,Int,BitInt类型。运算符查看两个参数的二进制表示法的值,并执行按位”与”操作。两个表达式的一位均为1时,则结果的该位为 1。否则,结果 的该位为 0。

    举例:
    select 1&2 from src limit 1;
    Result: 0
    


    操作符返回类型描述
    A | B A和B的公有类型 返回A和B的二进制值的按位或结果
    说明与解释:
           A和B可以为TinyInt,Int,BitInt类型。运算符查看两个参数的二进制表示法的值,并执行按位”或”操作。只要任一表达式的一位为 1,则结果的该位为 1。否则,结果的该位为 0。

    举例:
    select 1|2 from src limit 1;
    Result: 3
    


    操作符返回类型描述
    A ^ B A和B的公有类型 返回A和B的二进制值的按位或结果
    说明与解释:
           A和B可以为TinyInt,Int,BitInt类型。运算符查看两个参数的二进制表示法的值,并执行按位”异或”操作。当且仅当只有一个表达式的某位上为 1 时,结果的该位才为 1。否则结果的该位为 0。

    举例:
    select 1^1 from src limit 1;
    Result: 0
    


    操作符返回类型描述
    ~A 和A类型相同 返回把A的二进制表达式按位取反的值
    说明与解释:
           A可以为TinyInt,Int,BitInt类型。对表达式 A 执行按位”非”(取反)。

    举例:
    select ~1 from src limit 1;
    Result: -2
    


  • 逻辑运算符(8)
  • AND, OR, |, NOT, !, IN, NOT IN, [NOT] EXISTS

    操作符返回类型描述
    A AND B Boolean 返回A和B逻辑与的结果
    说明与解释:
           A和B必须是Boolean类型,返回二者的逻辑与的结果。即A和B同时正确时,返回TRUE,否则FALSE。如果A或B值为NULL,返回NULL。

    举例:
    select 1==1 and true from src limit 1;
    Result: true
    


    操作符返回类型描述
    A OR B Boolean 返回A和B逻辑或的结果
    说明与解释:
           A和B必须是Boolean类型,返回二者的逻辑或的结果。即A或B正确,或两者同时正确返返回TRUE,否则FALSE。如果A和B值同时为NULL,返回NULL。

    举例:
    select 1==1 or true from src limit 1;
    Result: true
    


    操作符返回类型描述
    NOT A Boolean 对A的逻辑布尔值求反
    说明与解释:
           A必须是Boolean类型,如果A为NULL或错误的时候返回TURE,否则返回FALSE。

    举例:
    select not true from src limit 1;
    Result: false
    


    操作符返回类型描述
    !A Boolean 对A的逻辑布尔值求反
    说明与解释:
           用法和'NOT'一致。

    举例:
    select !true from src limit 1;
    Result: false
    


    操作符返回类型描述
    A IN (val1, val2, ...) Boolean 判断A是否是指定值中的一个
    说明与解释:
           A可以是除了Boolean之外的所有基本类型。如果A和指定值中的任何一个相等,即返回true,反之返回false。

    举例:
    select '1' in (1,2,3) from src limit 1;
    Result: true
    


    操作符返回类型描述
    A NOT IN (val1, val2, ...) Boolean 判断A是否不是指定值中的一个
    说明与解释:
           A可以是除了Boolean之外的所有基本类型。如果A和指定值中的任何值都不相等,返回true,反之返回false。

    举例:
    select '1' not in (1,2,3) from src limit 1;
    Result: false
    


    操作符返回类型描述
    [NOT] EXISTS (subquery) Boolean 判断子查询中是否有结果
    说明与解释:
           只要子查询返回了至少一列的值,返回true,反之返回false。

    举例:
    select 1 from src s1 where exists (select 1 from src s2 where s1.a=s2.a) limit 1;
    Result: 1
    


  • 复杂类型构造函数(3)
  • map,struct,named_struct,array

    操作符返回类型描述
    map(key1, value1, key2, value2, …) map类型 创建键值对
    说明与解释:
           通过指定的键/值对,创建一个map类型。所指定的所有key必须有公共类型,所有的value也必须有公共类型,得到的map的key类型即所有key的公共类型。map(int,string,double,string)得到的类型是map<double,string>,而map(int,string,boolean,string)是不合法的,因为在这里Int和Boolean是没有公共类型的。

    举例:
    select map(1,2,'3',4) from src limit 1;
    Result: {"1":2,"3":4}
    


    操作符返回类型描述
    struct(val1, val2, val3, …) struct类型 创建struct结构体
    说明与解释:
           val[1-n]是相同类型的变量,或者是有公共类型的。得到的是val[1-n]的公共类型的struct结构体。

    举例:
    select struct(1,2,3) from src limit 1;
    Result: {"col1":1,"col2":2,"col3":3}
    


    操作符返回类型描述
    named_struct(name1, val1, name2, val2, ...) struct类型 创建自定义字段名称的struct结构体
    说明与解释:
           val[1-n]是相同类型的变量,或者是有公共类型的,name[1-n]是字符类型。得到的是以name[1-n]为名字,以val[1-n]为对应值的的struct结构体,每个名字有自己的类型。比如named_struct('name1',1,'name2','1')得到的是

    举例:
    select named_struct('name1',100,'name2','200') from src limit 1;
    Result: {"name1":100,"name2":"200"}
    


    操作符返回类型描述
    array(val1, val2, …) Array类型 创建键值对
    说明与解释:
           通过指定的元素,创建一个数组。Array的类型是所有元素的公共类型。

    举例:
    select array(1,'1',1.1) from src limit 1;
    Result: ["1","1","1.1"]
    


  • 复杂类型操作符(3)
  • A[n], M[key], S.x

    操作符返回类型描述
    A[n] 数组的类型 返回数组的第n个元素
    说明与解释:
           只要子查询返回了至少一列的值,返回true,反之返回false。

    举例:
     select array(1,2,3)[0] from src ;
    Result: 1
    


    操作符返回类型描述
    M[key] Map元素中的类型 返回map中对应key的value
    说明与解释:
           返回关键值对应的值,例如mapM为 {‘f’ -> ‘foo’, ‘b’ -> ‘bar’, ‘all’ -> ‘foobar’},则M['all'] 返回’foobar’。

    举例:
    select map('k1',100,'k2',200)['k1'] from src ;
    Result: 100
    


    操作符返回类型描述
    S.x Struct的类型 返回Struct的第x个元素
    说明与解释:
           返回结构x字符串在结构S中的存储位置。如 foobar {int foo, int bar} foobar.foo的领域中存储的整数。

    举例:
    select named_struct('name1',100,'name2','200').name1 from src limit 1;
    Result: 100
    


  • 字符串函数
  • ascii, base64, concat, context_ngrams, concat_ws, concat_ws, encode, find_in_set, format_number, get_json_object, in_file, instr, length, locate, lower, lcase, lpad, ltrim, ngrams, parse_url, printf, regexp_extract, regexp_replace, repeat, reverse, rpad, rtrim, sentences, space, split, str_to_map, substr, substring, translate, trim, unbase64, upper, ucase, chr, oracle_instr, to_number, trunk, to_char, to_semiangle, nvl, decode, greatest, lnnvl, nvl2, rangedecode
    函数名返回类型描述
    ascii(A) Int 返回A第一个字符的ascii值
    说明与解释:
           A可以是除了Boolean之外的任何基本类型,返回A第一个字符的ascii值。

    举例:
    select ascii('20') from src;
    Result: 50
    


    函数名返回类型描述
    base64(A) Int 把binary转化为Base64字符
    说明与解释:
           A可以是除了Boolean之外的任何基本类型,返回A的Base64编码格式的值。

    举例:
    select base64(binary('1')) from src;
    Result: MQ==
    


    函数名返回类型描述
    concat(a,b,c……) String 合并输入的所有项
    说明与解释:
           A可以是除了Boolean之外的任何基本类型,连接多个字符串,合并为一个字符串,可以接受任意数量的输入字符串,返回字符串类型。

    举例:
    select concat(1,2,3) from src limit 1;
    Result: 123
    


    函数名返回类型描述
    context_ngrams(array>, array, int K, intpf) String 返回字符串中的 Top-K 和 N-grams
    说明与解释:
           从给定一个字符串上下文中,返回从一组标记的句子的Top-k和n-grams结果。

    举例:
    SELECT ngrams(sentences(lower(tweet)), 2, 100 [, 1000]) FROM twitter;
    


    函数名返回类型描述
    concat_ws(string SEP, string A, string B…) String 以SEP为分隔把A、B……合并起来
    说明与解释:
           所有输入参数都必须是字符类型

    举例:
    select concat_ws('|','1','2','3') from src;
    Result: 1|2|3
    


    函数名返回类型描述
    encode(A,B) Int 返回A的长度
    说明与解释:
           AB都是字符类型,用B指定的编码格式来对A编码。

    举例:
     select encode('transwarp','gbk') from src;
    Result: transwarp
    


    函数名返回类型描述
    find_in_set(string str, string strList) Int 返回字符串str第一次在strlist出现的位置
    说明与解释:
           参数str以','分隔。函数返回字符串str第一次在strlist出现的位置。如果任一参数为NULL,返回NULL;如果第一个参数包含逗号,返回0。

    举例:
    select find_in_set('4','1,2,3,4') from src;
    Result: 4
    


    函数名返回类型描述
    format_number(number,format) Double 返回指定格式的number
    说明与解释:
           A必须是数字类型,format必须是Int、TinyInt、BigInt的一种,指定了number的精度。

    举例:
    select format_number(100,2) from src;
    Result: 100.00
    


    函数名返回类型描述
    get_json_object(string json_string, string path) Int 从指定地址获取json对象
    说明与解释:
           从指定地址获取json对象。

    举例:
    select a.timestamp, get_json_object(a.appevents, ‘$.eventid’),
    get_json_object(a.appenvets, ‘$.eventname’) from log a;
    


    函数名返回类型描述
    in_file(str,filepath) Boolean 判断指定字符是否在文件中出现
    说明与解释:
           str为String类型,filepath必须是存在的文件路径。

    举例:
    select in_file('123','/etc/hosts') from src;
    Result: false
    


    函数名返回类型描述
    instr(string str, string substr) Int 返回substr在str中出现的位置
    说明与解释:
           返回substr在str中出现的位置,不曾出现则返回0。

    举例:
    select instr('001122','1') from src;
    Result: 3
    


    函数名返回类型描述
    length(A) Int 返回A的长度
    说明与解释:
           A可以是除了Boolean之外的任何基本类型,返回A的长度。

    举例:
    select length(1.1) from src;
    Result: 3
    


    函数名返回类型描述
    locate(string substr, string str[, int pos]) Int 定位substr第一次在str中出现的位置
    说明与解释:
           如果指定了pos值,则返回从str的第pos个位置之后,第一次出现substr的位置。

    举例:
    select locate('123','456789123') from src;
    Result: 7
    


    函数名返回类型描述
    lower(string A) String 把A中字母都转化为小写
    说明与解释:
           把A中字母都转化为小写。

    举例:
    select lower('A') from src;
    Result: a
    


    函数名返回类型描述
    lcase(string A) String 把A中字母都转化为小写
    说明与解释:
           用法和 'lower' 一致。

    举例:
    select lower('A') from src;
    Result: a
    


    函数名返回类型描述
    lpad(string str, int len, string pad) String 用pad补全字符到指定长度
    说明与解释:
           用pad参数的值,在左方补全str为len长度。如果len的值小于str的长度,则返回从左截取len长度的字符。

    举例:
    select lpad('123456789',11,'a') from src;
    Result: aa123456789
    


    函数名返回类型描述
    ltrim(string A) String 去掉字符左侧的空格
    说明与解释:
           只去掉字符左侧的空格,返回字符类型。

    举例:
    select ltrim(' transwarp ') from src limit 1;
    Result: 'transwarp '
    


    函数名返回类型描述
    ngrams(array>, int N, int K, int pf) Int 返回字符序列中的Top-K和N-grams值
    说明与解释:
           返回字符序列中的Top-K和N-grams值。

    举例:
    SELECT ngrams(sentences(lower(tweet)), 2, 100 [, 1000]) FROM twitter;
    


    函数名返回类型描述
    parse_url(string urlString, string part Int 返回URL中指定的部分
    说明与解释:
           字符类型的part指定了返回URL的部分,可以是:'HOST', 'PATH', 'QUERY', 'REF', 'PROTOCOL', 'AUTHORITY', 'FILE', and 'USERINFO'中的一个。

    举例:
    select parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'HOST') from src limit 1;
    Result: facebook.com
    


    函数名返回类型描述
    printf(String format, Obj... args) String 返回指定输出格式的字符
    说明与解释:
           A可以是除了Boolean之外的任何基本类型,返回A的长度。

    举例:
    SELECT printf("Hello World %d %s", 100, "days")FROM src LIMIT 1;
    Result: Hello World 100 days
    


    函数名返回类型描述
    regexp_extract(string subject, string pattern, int index) String 返回指定部分的正则表达式
    说明与解释:
           通过下标返回正则表达式指定的部分。

    举例:
    select regexp_extract('foothebar', 'foo(.*?)(bar)', 0) from src;
    Result: the
    


    函数名返回类型描述
    regexp_replace(string INITIAL_STRING, string PATTERN, string REPLACEMENT) Int 替换符合正则表达式的部分
    说明与解释:
           把INITIAL_STRING中符合正则表达式PATTERN的部分替换为REPLACEMENT。

    举例:
    SELECT regexp_replace('foothebarfoobar', 'foo(.*?)(bar)', 'num') FROM src LIMIT 1;
    Result: numnum
    


    函数名返回类型描述
    repeat(string str, int n) String 返回A的长度
    说明与解释:
           A可以是除了Boolean之外的任何基本类型,返回n个str连在一起的字符串。

    举例:
    select repeat(1, 10) from src;
    Result: 1111111111
    


    函数名返回类型描述
    reverse(A) String 把字符A转置
    说明与解释:
           返回转置的字符。

    举例:
    select reverse('transwarp') from src limit 1;
    Result: prawsnart
    


    函数名返回类型描述
    rpad(string str, int len, string pad) String 用pad在右侧补全字符到指定长度
    说明与解释:
           用pad参数的值,在右方补全str为len长度。如果len的值小于str的长度,则返回从右截取len长度的字符。

    举例:
    select rpad('123456789',11,'a') from src;
    Result: 123456789aa
    


    函数名返回类型描述
    rtrim(string A) String 去掉字符右侧的空格
    说明与解释:
           只去掉字符右侧的空格,返回字符类型。

    举例:
    select rtrim(' transwarp ') from src limit 1;
    Result: 'transwarp '
    


    函数名返回类型描述
    sentences(str, lang, country) Array<Array<String>> 把自然语言分成句子和词组
    说明与解释:
           给一个包含自然语言句子的字符类型,在合适的位置分词,返回一些包含词组的数组。

    举例:
    select sentences('Hello there! How are you?') from src limit 1;
    Result: [["Hello","there"],["How","are","you"]]
    


    函数名返回类型描述
    space(int n) String 返回n个空格的字符
    说明与解释:
           返回n个空格的字符。

    举例:
    select space(5) from src limit 1;
    Result: '     '
    


    函数名返回类型描述
    split(string str, string pat) Array<string> 按指定分隔符分割字符
    说明与解释:
           把字符串str按pat分隔,返回String数组。

    举例:
    select split('TDH-Inceptor','-') from src;
    Result: ["TDH","Inceptor"]
    


    函数名返回类型描述
    str_to_map(text[, delimiter1, delimiter2]) Map 把字符转化为map
    说明与解释:
           第一个分隔符用于分隔不同组的K-V,第二个分隔符用于分隔每一组K-V。

    举例:
    select str_to_map('a-b=c-d','=','-') from src;
    Result: {"a":"b","c":"d"}
    


    函数名返回类型描述
    substr(string A, int start [, lenth]) String 获取子字符串
    说明与解释:
           返回A从start位置开始的子字符串,若指定length则返回从start开始,长度为length的子字符串。

    举例:
    select substr('Transwarp',6,3) from src limit 1;
    Result: war
    


    函数名返回类型描述
    substring(string A, int start [, lenth]) String 获取子字符串
    说明与解释:
           用法和 'substr' 一致

    举例:
    select substring('Transwarp',6,3) from src limit 1;
    Result: war
    


    函数名返回类型描述
    translate(string|char|varchar input, string|char|varchar from, string|char|varchar to) String 用指定字符替换目标
    说明与解释:
           translate方法作用于input string(第一个参数)的字符上,规则为出现在from_string中的字符用to_string中对应位置的字符来替换。如果to_string的长度 比from_string短,那么from_string中多出来的位置的字符会在output中被移除。

    举例:
    select translate('abcdef', 'adc', '19') from src limit 1;
    Result: 1b9ef
    


    函数名返回类型描述
    trim(string s) String 去掉字符左右的空格
    说明与解释:
           去掉字符左右的空格。

    举例:
    select trim(' transwarp ') from src limit 1;
    Result: 'transwarp'
    


    函数名返回类型描述
    unbase64(string str) Binary 把base64格式转化为binary
    说明与解释:
           把base64格式转化为binary。

    举例:
    select unbase64(base64(binary('Transwarp'))) from src limit 1;
    Result: Transwarp
    


    函数名返回类型描述
    upper(string A) String 把字符中的字母都转化为大写
    说明与解释:
           把字符中的字母都转化为大写,其他字符不变。

    举例:
    select upper('transwarp') from src limit 1;
    Result: TRANSWARP
    


    函数名返回类型描述
    ucase(string A) String 把字符中的字母都转化为大写
    说明与解释:
           用法和upper一致。

    举例:
    select ucase('transwarp') from src limit 1;
    Result: TRANSWARP
    


    函数名返回类型描述
    chr(A) String 返回整型的char值
    说明与解释:
           chr(number_code):只能传入int,转为String.valueof((char) number_code),字符编码格式为内置的unicode。

    举例:
    select chr(123) from src;
    Result: {
    


    函数名返回类型描述
    oracle_instr(string1, string2 [, start_position [, nth_appearance ]]) String 返回子字符第一次出现的下标
    说明与解释:
           新增四个参数,遵守Oracle的函数定义。

    举例:
    SELECT oracle_instr('Transwarp', 'warp') FROM src LIMIT 1;
    Result: 6
    


    函数名返回类型描述
    to_number(value, format_mask) Int 把string转化为number
    说明与解释:
           按照指定的格式来格式化字符。

    举例:
    select to_number('1239.0') from src limit 1;
    Result: 1239
    


    函数名返回类型描述
    trunc(date, format) String 返回日期的指定格式
    说明与解释:
           支持string类型的date字段按format返回特定的日期。format='yyyy'/'yy',返回该年第一天的日期;format='mm',返回该月第一天;format='dd',得到日期;format='d',得到该周第一天的日期;format='hh',得到精确到小时的时间;format='mi',得到精确到分钟的时间。

    举例:
    select trunc('2015-01-30 11:11:11','hh') from src limit 1;
    Result: 2015-01-30 11:00:00
    


    函数名返回类型描述
    to_char(date, pattern) / to_char(number [,format]) String 返回指定格式的日期(数字)字符
    说明与解释:
           输入的第一个参数为date的时候,把yyyy-MM-dd HH:mm:ss形式的string转化为输入pattern形式的string;第一个参数为数字时,则把数字转成string或按照一定format转string

    举例:
    select to_char('2015-01-30','yyyyMMdd') from src;
    Result: 20150130
    


    函数名返回类型描述
    to_semiangle(string) String 把全角字符转化为半角字符
    说明与解释:
           把全角字符转化为半角字符。

    举例:
    select to_semiangle('transwarp') from src limit 1;
    Result: 2015-01-30 11:00:00
    


    函数名返回类型描述
    nvl(eExpr1, eExpr2) String 替换null为其他字符
    说明与解释:
           eExpr1为空时返回eExpr2的值,仅支持基本类型(包括string)。

    举例:
    select nvl(null,'Transwarp') from src limit 1;
    Result: Transwarp
    


    函数名返回类型描述
    nvl2(string1, value_if_not_null, value_if_null) String 根据字符是否为null返回不同的值
    说明与解释:
           若string1为null,返回value_if_not_null,否则返回value_if_null。

    举例:
    select nvl2(null,'Transwarp','TDH') from src limit 1;
    Result: 2015-01-30 11:00:00
    


    函数名返回类型描述
    lnnvl(condition) String 处理判断条件中有null值出现的情况
    说明与解释:
           condition是一个表达式,所得值是Boolean类型。condition为null时,返回true;condition为true时返回false;condition为false时返回true。

    举例:
    select lnnvl(true), lnnvl(false), lnnvl(null) from src limit 1;
    Result: false true true
    


    函数名返回类型描述
    decode(value1, value2, value3, .... defaultValue) String 根据字符是否相等选择不同返回值
    说明与解释:
           返回当value1=value2的时候返回value3,否则返回defaultValue。

    举例:
    select decode(1,1,'transwarp','TDH') from src;
    Result: transwarp
    


    函数名返回类型描述
    range_decode(value, isLeftClose, isRightClose,left1, right1, value1, left2, right2, value2, defaultValue) String 根据字符是否相等选择不同返回值
    说明与解释:
           返回当value1=value2的时候返回value3,否则返回defaultValue。

    举例:
    SELECT range_decode('dep', false, true,"ACCOUNT", "HR", "NO-DEP") FROM src LIMIT 1;
    Result:NO-DEP
    


    函数名返回类型描述
    greatest(value1, value2, value3, ....) value的共有类型 返回value中最大的值
    说明与解释:
           如果是数字类型比较,返回类型所有参数的公共类型,返回其中的最大值。如果是字符类型比较,则是逐位比较。

    举例:
    select greatest('10','9') from src limit 1;
    Result: '9'
    


  • 条件函数
  • If, coalesce, CASE a WHEN b THEN c [WHEN d THEN e] [ELSE f] END, CASE WHEN a THEN b [WHEN c THEN d] [ELSE e] END
    函数名返回类型描述
    if(booleantestCondition, T valueTrue, T valueFalseOrNull) String 根据条件真假返回不同的值
    说明与解释:
           如果booleantestCondition为true,返回valueTrue,否则返回TvalueFalseOrNull。

    举例:
    select if(true,'Transwarp','TDH') from src limit 1;
    Result: 'Transwarp'
    


    函数名返回类型描述
    coalesce(a1, a2, ...) String 返回第一个非null的值
    说明与解释:
           返回第一个非null的值。

    举例:
    select coalesce(null,'Transwarp','TDH') from src limit 1;
    Result: 'Transwarp'
    


    函数名返回类型描述
    CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END 相应参数类型 根据条件返回不同的值
    说明与解释:
           如果a的值为b则执行c……否则执行f。

    举例:
    select case 't' when 't' then 'Transwarp' else 'TDH' end from src;
    Result: 'Transwarp'
    


    函数名返回类型描述
    CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END 相应参数类型 根据参数真假返回不同值
    说明与解释:
           a和c 必须是Boolean类型。

    举例:
    select case when true then 'Transwarp' else 'TDH' end from src;
    Result: 'Transwarp'
    


  • 聚合函数
  • count, sum, avg, min, max, variance, var_pop, var_samp, stddev_pop, stddev_samp, covar_pop, covar_samp, corr, percentile, percentile_approx, histogram_numeric, collect_set, collect_list, ntile

    当前工作位置

    函数名返回类型描述
    count(expr) Int 统计字段数量
    说明与解释:
           返回记录条数。

    举例:
    select count(1) from transwarp;
    Result: 1314
    


    函数名返回类型描述
    sum(expr) Int 求和
    说明与解释:
           返回某常数或者某一列的平均值。

    举例:
    select sum(1) from transwarp;
    Result: 1314
    


    函数名返回类型描述
    avg(expr) Double 平均值
    说明与解释:
           返回某常数或者某一列的平均值。

    举例:
    select avg(price) from transwarp;
    Result: 100000
    


    函数名返回类型描述
    min(expr) 字段的公共类型 最小值
    说明与解释:
           返回某列的最小值。

    举例:
    select min(price) from transwarp;
    Result: 100000
    


    函数名返回类型描述
    max(expr) 字段的公共类型 最小值
    说明与解释:
           返回某列的最小值。

    举例:
    select max(price) from transwarp;
    Result: 100000
    


    函数名返回类型描述
    variance(x) Double 求方差
    说明与解释:
           返回某列所有值的方差。

    举例:
    select variance(price) from transwarp;
    Result: 0.0
    


    函数名返回类型描述
    var_pop(x) Double 求方差
    说明与解释:
           用法同 'variance' 一致。

    举例:
    select var_pop(price) from transwarp;
    Result: 0.0
    


    函数名返回类型描述
    var_samp(x) Double 求样本方差
    说明与解释:
           返回指定列的样本方差。

    举例:
    select var_samp(price) from transwarp;
    Result: 0.0
    


    函数名返回类型描述
    std(x) Double 标准差
    说明与解释:
           返回指定列的标准差。

    举例:
    select std(price) from transwarp;
    Result: 0.0
    


    函数名返回类型描述
    stddev(x) Double 标准差
    说明与解释:
           返回指定列的标准差,用法和 'std' 一致。

    举例:
    select stddev(price) from transwarp;
    Result: 0.0
    


    函数名返回类型描述
    stddev_pop(x) Double 标准差
    说明与解释:
           返回指定列的标准差,用法和 'std' 一致。

    举例:
    select stddev_pop(price) from transwarp;
    Result: 0.0
    


    函数名返回类型描述
    stddev_sample(x) Double 标准差
    说明与解释:
           返回指定列的样本标准差。

    举例:
    select stddev_sample(price) from transwarp;
    Result: 7.45430868352036E-12
    


    函数名返回类型描述
    covar_pop(x,y) Double 总体协方差
    说明与解释:
           返回两列数值的协方差,计算方式是:当x和y都不为null的时候,(SUM(x*y)-SUM(x)*SUM(y)/COUNT(x,y))/COUNT(x,y),否则返回null。

    举例:
    select covar_pop(1,2) from transwarp;
    Result: 0.0
    


    函数名返回类型描述
    covar_samp(x,y) Double 样本协方差
    说明与解释:
           返回两列的样本协方差。

    举例:
    select covar_samp(1,1) from transwarp;
    Result: 0.0
    


    函数名返回类型描述
    corr(x,y) String 统计字段数量
    说明与解释:
           返回两列数的皮尔森相关系数。

    举例:
    select corr(1,1) from transwarp;
    Result: NaN
    


    函数名返回类型描述
    percentile(expr, pc) Double 数值区域的百分比数值点
    说明与解释:
           返回数值区域的百分比数值点。0<=P<=1,否则返回NULL,不支持浮点型数值。

    举例:
    select percentile(1,1) from src;
    Result: 0.0
    


    函数名返回类型描述
    percentile(BIGINT col, array(p1 [, p2]...)) Array<Double> 数值区域的百分比对应的数值点
    说明与解释:
           返回数值区域的一组百分比值分别对应的数值点。0<=P<=1,否则返回NULL,不支持浮点型数值。

    举例:
    select percentile(1,array('1')) from src;
    Result: [1.0]
    


    函数名返回类型描述
    percentile_approx(DOUBLE col, p [, B]) Double 数值区域的百分比数值点的近似值
    说明与解释:
           返回数值区域的百分比数值点的近似值。0<=P<=1,否则返回NULL,支持浮点型数值。参数B设置精确 度,越高的B值精确度越高,缺省值为10,000。当列中distinct值的数目小于B时,此时返回准确值。

    举例:
    SELECT percentile_approx(val, 0.56, 100000) FROM somedata;
    Result: 2.26
    


    函数名返回类型描述
    percentile_approx(col, array(p~1,, [, p,,2_]…) [, B]) Array 数值区域的百分比数值点的近似值
    说明与解释:
           与上个方法相似,除了接受与返回一组百分比数值点,而不是一个。

    举例:
    SELECT percentile_approx(val, array(0.5, 0.95, 0.98), 100000) FROM somedata;
    Result: [0.05,1.64,2.26]
    


    函数名返回类型描述
    histogram_numeric(expr, nb) array 统计字段数量
    说明与解释:
           用nb的值计算数字类型expr的直方图

    举例:
    SELECT histogram_numeric(1, 3) FROM transwarp;
    Result: [{"x":1.0,"y":500.0},{"x":1.0,"y":499.0}]
    


    函数名返回类型描述
    collect_set(x) Array 去重
    说明与解释:
           返回没有重复的记录。

    举例:
    select collect_set(price) from transwarp;
    Result: 100000
    


    函数名返回类型描述
    count(expr) Int 统计字段数量
    说明与解释:
           返回记录条数。

    举例:
    select count(*) from transwarp;
    Result: 999
    


    select module, customer/(sum(customer) over()) from tdh;

  • 类型转换函数:binary, cast(expr as ) (YYY)
  • UDTF: explode, inline, json_tuple, parse_url_tuple, posexplode, stack, (YYY)
  • 集合函数 size, map_keys, map_values, array_contains, sort_array (YYY)
  • 其他功能函数:to_card_15_to_18(15位身份证号转18位)