hive 函数(三)

  1. If 函数: if
    语法: if(boolean testCondition, T valueTrue, T valueFalseOrNull)
    返回值: T
    说明: 当条件 testCondition 为 TRUE 时,返回 valueTrue;否则返回 valueFalseOrNull
    举例:
    hive> select if(1=2,100,200) from lgy;
    200
    hive> select if(1=1,100,200) from lgy;
    100

  2. 非空查找函数: COALESCE
    语法: COALESCE(T v1, T v2, …)
    返回值: T
    说明: 返回参数中的第一个非空值;如果所有值都为 NULL,那么返回 NULL
    举例:
    hive> select COALESCE(null,‘100’,'50′) from lgy;
    100

  3. 条件判断函数:CASE
    语法: CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END
    返回值: T
    说明:如果 a 等于 b,那么返回 c;如果 a 等于 d,那么返回 e;否则返回 f
    举例:
    hive> Select case 100 when 50 then ‘tom’ when 100 then ‘mary’ else ‘tim’ end from
    lgy;
    mary
    hive> Select case 200 when 50 then ‘tom’ when 100 then ‘mary’ else ‘tim’ end from
    lgy;
    tim

  4. 条件判断函数:CASE
    语法: CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END
    返回值: T
    说明:如果 a 为 TRUE,则返回 b;如果 c 为 TRUE,则返回 d;否则返回 e
    举例:
    hive> select case when 1=2 then ‘tom’ when 2=2 then ‘mary’ else ‘tim’ end from lgy;
    mary
    hive> select case when 1=1 then ‘tom’ when 2=2 then ‘mary’ else ‘tim’ end from lgy;
    tom

  5. 字符串连接函数:concat
    语法: concat(string A, string B…)
    返回值: string
    说明:返回输入字符串连接后的结果,支持任意个输入字符串
    举例:
    hive> select concat(‘abc’,'def’,'gh’) from lgy;
    abcdefgh

  6. 带分隔符字符串连接函数:concat_ws
    语法: concat_ws(string SEP, string A, string B…)
    返回值: string
    说明:返回输入字符串连接后的结果,SEP 表示各个字符串间的分隔符
    举例:
    hive> select concat_ws(’,’,‘abc’,‘def’,‘gh’) from lgy;
    abc,def,gh

  7. 数组转换成字符串的函数:concat_ws
    语法: concat_ws(string SEP, array)
    返回值: string
    说明:返回将数组链接成字符串后的结果,SEP 表示各个字符串间的分隔符
    举例:
    hive> select concat_ws(’|’,array(‘a’,‘b’,‘c’)) from lgy;
    OK
    a|b|c

  8. 小数位格式化成字符串函数:format_number
    语法: format_number(number x, int d)
    返回值: string
    说明:将数值 x 的小数位格式化成 d 位,四舍五入
    举例:
    hive> select format_number(5.23456,3) from lgy;
    OK
    5.235

  9. 字符串截取函数:substr,substring
    语法: substr(string A, int start),substring(string A, int start)
    返回值: string
    说明:返回字符串 A 从 start 位置到结尾的字符串
    举例:
    hive> select substr(‘abcde’,3) from lgy;
    cde
    hive> select substring(‘abcde’,3) from lgy;
    cde
    hive> select substr(‘abcde’,-1) from lgy; (和 ORACLE 相同)
    e

  10. 字符串截取函数:substr,substring
    语法: substr(string A, int start, int len),substring(string A, int start, int len)
    返回值: string
    说明:返回字符串 A 从 start 位置开始,长度为 len 的字符串
    举例:
    hive> select substr(‘abcde’,3,2) from lgy;
    cd
    hive> select substring(‘abcde’,3,2) from lgy;
    cd
    hive>select substring(‘abcde’,-2,2) from lgy;
    de

  11. 字符串查找函数:instr
    语法: instr(string str, string substr)
    返回值: int
    说明:返回字符串 substr 在 str 中首次出现的位置
    举例:
    hive> select instr(‘abcdf’,‘df’) from lgy;
    OK
    4

  12. 字符串长度函数:length
    语法: length(string A)
    返回值: int
    说明:返回字符串的长度
    举例:
    hive> select length(‘abc’) from lgy;
    OK
    3

  13. 字符串查找函数:locate
    语法: locate(string substr, string str[, int pos])
    返回值: int
    说明:返回字符串 substr 在 str 中从 pos 后查找,首次出现的位置
    举例:
    hive> select locate(‘a’,‘abcda’,1) from lgy;
    OK
    1
    hive> select locate(‘a’,‘abcda’,2) from lgy;
    OK
    5

  14. 字符串格式化函数:printf
    语法: printf(String format, Obj… args)
    返回值: string
    说明:将指定对象用 format 格式进行格式化.
    举例:
    hive> select printf("%08X",123) from lgy;
    OK
    0000007B

  15. 字符串转换成 map 函数:str_to_map
    语法: str_to_map(text[, delimiter1, delimiter2])
    返回值: map<string,string>
    说明:将字符串按照给定的分隔符转换成 map 结构.
    举例:
    hive> select str_to_map(‘k1:v1,k2:v2’) from lgy;
    OK
    {“k2”:“v2”,“k1”:“v1”}
    hive> select str_to_map(‘k1=v1,k2=v2’,’,’,’=’) from lgy;
    OK
    {“k2”:“v2”,“k1”:“v1”}

  16. 字符串转大写函数:upper,ucase
    语法: upper(string A) ucase(string A)
    返回值: string
    说明:返回字符串 A 的大写格式
    举例:
    hive> select upper(‘abSEd’) from lgy;
    ABSED
    hive> select ucase(‘abSEd’) from lgy;
    ABSED

  17. 字符串转小写函数:lower,lcase
    语法: lower(string A) lcase(string A)
    返回值: string
    说明:返回字符串 A 的小写格式
    举例:
    hive> select lower(‘abSEd’) from lgy;
    absed
    hive> select lcase(‘abSEd’) from lgy;
    absed

  18. 去空格函数:trim
    语法: trim(string A)
    返回值: string
    说明:去除字符串两边的空格
    举例:
    hive> select trim(’ abc ') from lgy;
    abc

  19. 左边去空格函数:ltrim
    语法: ltrim(string A)
    返回值: string
    说明:去除字符串左边的空格
    举例:
    hive> select ltrim(’ abc ') from lgy;
    abc

  20. 右边去空格函数:rtrim
    语法: rtrim(string A)
    返回值: string
    说明:去除字符串右边的空格
    举例:
    hive> select rtrim(’ abc ') from lgy;
    abc

  21. 正则表达式替换函数:regexp_replace
    语法: regexp_replace(string A, string B, string C)
    返回值: string
    说明:将字符串 A 中的符合 java 正则表达式 B 的部分替换为 C。注意,在有些情况下要
    使用转义字符,类似 oracle 中的 regexp_replace 函数。
    举例:
    hive> select regexp_replace(‘foobar’, ‘oo|ar’, ‘’) from lgy;
    fb

  22. 正则表达式解析函数:regexp_extract
    语法: regexp_extract(string subject, string pattern, int index)
    返回值: string
    说明:将字符串 subject 按照 pattern 正则表达式的规则拆分,返回 index 指定的字符。
    举例:
    hive> select regexp_extract(‘foothebar’, ‘foo(.?)(bar)’, 1) from lgy;
    the
    hive> select regexp_extract(‘foothebar’, 'foo(.
    ?)(bar)’, 2) from lgy;
    bar
    hive> select regexp_extract(‘foothebar’, ‘foo(.?)(bar)’, 0) from lgy;
    foothebar
    注意,在有些情况下要使用转义字符,下面的等号要用双竖线转义,这是 java 正则表
    达式的规则。
    select data_field,
    regexp_extract(data_field,’.
    ?bgStart\=([^&]+)’,1) as aaa,
    regexp_extract(data_field,’.?contentLoaded_headStart\=([^&]+)’,1) as bbb,
    regexp_extract(data_field,’.
    ?AppLoad2Req\=([^&]+)’,1) as ccc
    from pt_nginx_loginlog_st
    where pt = ‘2012-03-26’ limit 2;

  23. URL 解析函数:parse_url
    语法: parse_url(string urlString, string partToExtract [, string keyToExtract])
    返回值: string
    说明:返回 URL 中指定的部分。partToExtract 的有效值为:HOST, PATH, QUERY, REF,
    PROTOCOL, AUTHORITY, FILE, and USERINFO.
    举例:
    hive> select parse_url(‘http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1’, ‘HOST’) from
    lgy;
    facebook.com
    hive> select parse_url(‘http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1’, ‘QUERY’, ‘k1’)
    from lgy;
    v1

  24. 空格字符串函数:space
    语法: space(int n)
    返回值: string
    说明:返回长度为 n 的字符串
    举例:
    hive> select space(10) from lgy;
    hive> select length(space(10)) from lgy;
    10

  25. 重复字符串函数:repeat
    语法: repeat(string str, int n)
    返回值: string
    说明:返回重复 n 次后的 str 字符串
    举例:
    hive> select repeat(‘abc’,5) from lgy;
    abcabcabcabcabc

  26. 左补足函数:lpad
    语法: lpad(string str, int len, string pad)
    返回值: string
    说明:将 str 进行用 pad 进行左补足到 len 位
    举例:
    hive> select lpad(‘abc’,10,‘td’) from lgy;
    tdtdtdtabc
    注意:与 GP,ORACLE 不同,pad 不能默认

  27. 右补足函数:rpad
    语法: rpad(string str, int len, string pad)
    返回值: string
    说明:将 str 进行用 pad 进行右补足到 len 位
    举例:
    hive> select rpad(‘abc’,10,‘td’) from lgy;
    abctdtdtdt

  28. 分割字符串函数: split
    语法: split(string str, string pat)
    返回值: array
    说明: 按照 pat 字符串分割 str,会返回分割后的字符串数组
    举例:
    hive> select split(‘abtcdtef’,‘t’) from lgy;
    [“ab”,“cd”,“ef”]

  29. 集合查找函数: find_in_set
    语法: find_in_set(string str, string strList)
    返回值: int
    说明: 返回 str 在 strlist 第一次出现的位置,strlist 是用逗号分割的字符串。如果没有找
    该 str 字符,则返回 0
    举例:
    hive> select find_in_set(‘ab’,‘ef,ab,de’) from lgy;
    2
    hive> select find_in_set(‘at’,‘ef,ab,de’) from lgy;
    0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值