目录

  • ​​hive outline​​
  • ​​hive 字符串函数​​
  • ​​字符串长度函数:length​​
  • ​​字符串反转函数:reverse​​
  • ​​字符串连接函数:concat​​
  • ​​带分隔符字符串连接函数:concat_ws​​
  • ​​字符串截取函数:substr,substring​​
  • ​​字符串转大写函数:upper,ucase​​
  • ​​字符串转小写函数:lower,lcase​​
  • ​​去空格函数:trim​​
  • ​​左边去空格函数:ltrim​​
  • ​​右边去空格函数:rtrim​​
  • ​​正则表达式替换函数:regexp_replace​​
  • ​​正则表达式解析函数:regexp_extract​​
  • ​​空格字符串函数:space​​
  • ​​重复字符串函数:repeat​​
  • ​​首字符ascii函数:ascii​​
  • ​​左补足函数:lpad​​
  • ​​右补足函数:rpad​​
  • ​​分割字符串函数: split​​
  • ​​集合查找函数: find_in_set​​
  • ​​json字符串处理函数:get_json_object​​

hive outline

​​链接​​

hive 字符串函数

字符串长度函数:length

​语法:​​length(str | binary)

select length("angelababy");

字符串反转函数:reverse

select reverse("angelababy");

字符串连接函数:concat

语法:concat(str1, str2, … strN)

select concat('hello', '-','word');

hive 字符串函数_字符串

select concat('hello', '-','word','-', 'hive');

hive 字符串函数_json_02


​​实战演练​

带分隔符字符串连接函数:concat_ws

语法:concat_ws(separator, [string | array(string)]+)
​​​当多个字符串间连接字符相同时,​​可以改用函数:concat_ws

select concat_ws('-','hello', 'word', 'hive');

hive 字符串函数_字符串_03

​​实战演练​​

字符串截取函数:substr,substring

​语法:​​substr(str, pos[, len]) 或者 substring(str, pos[, len])

select substr("angelababy",-2); -- pos是从1开始的索引,如果为负数则倒着数
select substr("angelababy",2,2);

字符串转大写函数:upper,ucase

select upper("angelababy");
select ucase("angelababy");

字符串转小写函数:lower,lcase

select lower("ANGELABABY");
select lcase("ANGELABABY");

去空格函数:trim

​语法:​​trim 去除左右两边的空格

select trim(" angelababy ");

左边去空格函数:ltrim

右边去空格函数:rtrim

正则表达式替换函数:regexp_replace

​语法:​​regexp_replace(str, regexp, rep)

select regexp_replace('100-200', '(\\d+)', 'num');
-- 输出 num-num

正则表达式解析函数:regexp_extract

​语法:​​regexp_extract(str, regexp[, idx]) 提取正则匹配到的指定组内容

select regexp_extract('100-200', '(\\d+)-(\\d+)', 2);
-- 输出 200

空格字符串函数:space

​语法:​​space(n) 返回指定个数空格

select space(4);

重复字符串函数:repeat

​语法:​​repeat(str, n) 重复str字符串n次

select repeat("angela",2);

首字符ascii函数:ascii

​语法:​​ascii

select ascii("angela");  --语法:a对应ASCII 97

左补足函数:lpad

右补足函数:rpad

分割字符串函数: split

​语法:​​分割字符串函数: split(str, regex)

select split('apache hive', '\\s+');

集合查找函数: find_in_set

​语法:​​ find_in_set(str,str_arrasqly)

select find_in_set('a','abc,b,ab,c,def');

json字符串处理函数:get_json_object

​语法:​​get_json_object(string json_string, string path)

  1. 第一个参数填写json对象变量,第二个参数使用$表示json变量标识
  2. 如果输入的json字符串无效,那么返回NULL
  3. 每次只能返回一个数据项
data =
{
"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"
}

get单层值

select  get_json_object(data, '$.owner') from test;
结果:amy

get多层值

select  get_json_object(data, '$.store.bicycle.price') from test;
结果:19.95

get数组值

select  get_json_object(data, '$.store.fruit[0]') from test;
结果:{“weight”:8,“type”:“apple”}