hive常用字符串公式

1. 字符串长度计算函数:length
SELECT length('csdnblog');
-- 8
2. 字符串反转函数:reverse
SELECT reverse('csdnblog');
-- 'golbndsc'
3. 字符串连接函数:concat
SELECT concat('www.','baidu.','com');
-- 'www.baidu.com'
4. 带分隔符字符串连接函数:concat_ws
SELECT concat_ws('.','www','baidu','com');
-- 'www.baidu.com'

参数也可以是数组

5. 字符串截取函数:substr, substring

语法:substr(string A, int start, int substr_length)
说明:返回字符串A从 start 位置开始截取的长度为 substr_length 的字符串,如果没有指明 substr_length 参数值,则截取到结尾(字符串编码从1 开始)。

SELECT substr('www.baidu.com',3,4);
-- 'w.ba'
SELECT substr('www.baidu.com',3);
-- 'w.baidu.com'
6. 字符串转大小写函数:upper, ucase, lower, lcase
SELECT upper('ewwAB');
-- 'EWWAB'
SELECT ucase('ewwAB');
-- 'EWWAB'
SELECT lower('ABCeD');
-- 'abced'
SELECT lcase('ABCeD');
-- 'abced'
7. 正则表达式替换函数:regexp_replace

语法:regexp_replace(string A, string pattern, string C)
说明:将字符串A中符合Java正则表达式 pattern 的部分替换为字符串C。

SELECT regexp_replace('foobar','oo|ar','');
-- 'fb'
8. 正则表达式解析函数:regexp_extract

语法:regexp_extract(string subject, string pattern, int index)
说明:将字符串 subject 按照 pattern 正则表达式的规则拆分,返回 index 指定的字符。
subject:要处理的字段
pattern:需要匹配的正则表达式;有些情况下要使用转义字符(双斜杠 \\)
index:
0 是显示与之匹配的整个字符串
1 是显示第一个括号里面匹配上的内容
2 是显示第二个括号里面匹配上的内容…依此类推

SELECT regexp_extract(ipstrs,'(\\d+\\.\\d+\\.\\d+\\.\\d+)')
FROM tmp_table;

SELECT
regexp_extract('x=a3&x=18abc&x=2&y=3','x=([0-9]+)([a-z]+)',0),  
-- x=18abc
regexp_extract('x=a3&x=18abc&x=2&y=3','^x=([a-z]+)([0-9]+)',0), 
-- x=a3
 
regexp_extract('https://detail.tmall.com/item.htm?spm=608.7065813.ne.1.Ni3rsN&id=522228774076&tracelog=fromnonactive','id=([0-9]+)',0),    
-- id=522228774076
regexp_extract('https://detail.tmall.com/item.htm?spm=608.7065813.ne.1.Ni3rsN&id=522228774076&tracelog=fromnonactive','id=([0-9]+)',1),    
-- 522228774076
 
regexp_extract('http://a.m.taobao.com/i41915173660.htm','i([0-9]+)',0),            
-- i41915173660
regexp_extract('http://a.m.taobao.com/i41915173660.htm','i([0-9]+)',1)             
-- 41915173660
from test_table;

正则匹配字符解释:

^ 表示开头
$ 表示结尾
. 表示任意字符
*表示任意多个
? 表示一个或0个字符

如手机号清洗: ‘1[0-9]{10}’

9. URL解析函数:parse_url

语法:parse_url(string urlString, string partToExtract[, string keyToExtract)
说明:返回URL指定部分。partToExtract的有效值为:HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, USERINFO.

SELECT parse_url('http://iteblog.com?weixin=iteblog_hadoop_hive', 'HOST') from iteblog;
-- iteblog.com
SELECT parse_url('http://iteblog.com?weixin=iteblog_hadoop_hive', 'QUERY', 'weixin')
--iteblog_hadoop_hive
10. json解析函数:get_json_object

语法:get_json_object(string json_string, string path)
说明:解析json字符串 json_string,返回 path 指定的内容。

SELECT get_json_object('{"store": {"fruit":[{"weight":8,"type":"apple"},{"weight":9,"type":"pear"}],"bicycle":{"price":19.95,"color":"red"}}, "email":"amy@only_for_json_udf_test.net","owner":"amy"}','$.owner');
-- amy
11. 分割字符串函数:split

语法:split(string str, string pat)
说明:按照 pat 字符分割str,返回分割之后的字符串数组

SELECT split('abedfegh', 'e');
-- ['ab','df','gh']
12. instr

语法:instr(string str, string substr)
说明:返回substr 在 str 中第一次出现的位置。若任何参数为null则返回null,若substr不在str中返回0(str 中第一个字符位置为1)。
可应用于模糊查询或者判断包含关系

select code,name,occupation from staff where instr(code,'001')>0;
-- 等同于;
select code,name,occupation from staff where code like "%001%";

select ccn,name from mas where instr('FH,FHH,FHM',ccn)>0;
-- 等同于;
select ccn,name from mas where ccn in ('FH,FHH,FHM');
13. 集合查找函数:find_in_set

语法:find_in_set(string str, string strList)
说明:返回 str 在 strList 第一次出现的位置,strList 是用逗号分割的字符串。如果没有找到该 str 字符,则返回0。

SELECT find_in_set('ab', 'ab,cd,fe');
-- 1
SELECT find_in_set('ae', 'ab,cd,fe');
-- 0
14. 补足函数:lpad、rpad

语法:trim(string A)
ltrim(string A)
rtrim(string A)
说明:去除字符串两边的空格
去除字符串左边的空格
去除字符串右边的空格

参考链接:
https://www.cnblogs.com/skyEva/p/5175377.html
https://www.iteblog.com/archives/1639.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值