Hive内置函数大全-04-字符串处理函数-更新中

186 阅读3分钟

ASCII(STRING str)

  • 定义:ascii(string str)
  • 说明:返回字符串中第一个字符的ASCII码
  • 返回值类型:int
  • 案例
SELECT ASCII('Hello'), ASCII(1),  ASCII(NULL), ASCII('李四'), ASCII('张三');

+------+------+-------+------+------+
| _c0  | _c1  |  _c2  | _c3  | _c4  |
+------+------+-------+------+------+
| 72   | 49   | NULL  | -26  | -27  |
+------+------+-------+------+------+

LENGTH(STRING a)

  • 定义:length(string A)
  • 说明:返回字符串长度
  • 返回值类型:int
  • 案例
SELECT LENGTH('fOoBaR'), LENGTH('你好');

+------+------+
| _c0  | _c1  |
+------+------+
| 6    | 2    |
+------+------+

CHARACTER_LENGTH(STRING str)、CHAR_LENGTH(STRING str)

  • 定义:character_length(string str) char_length(string str)
  • 说明:返回字符串中包含的UTF-8字符的个数
  • 返回值类型:int
  • 可用版本:hive-2.2.0+
  • 案例
SELECT CHARACTER_LENGTH('fOoBaR'), CHARACTER_LENGTH('你好'), CHAR_LENGTH('부모님건강하세여');

+------+------+------+
| _c0  | _c1  | _c2  |
+------+------+------+
| 6    | 2    | 8    |
+------+------+------+

TRIM(STRING a)、LTRIM(STRING a)、RTRIM(STRING a)

  • 定义:trim(string A) ltrim(string A) rtrim(string A)
  • 说明
    • trim:去除字符串左右两边的空白字符
    • ltrim:去除字符串左边的空白字符
    • rtrim:去除字符串右边的空白字符
  • 返回值类型:string
  • 案例
SELECT CONCAT('"', TRIM(' fOoBaR '), '"') AS trim;
+-----------+
|   trim    |
+-----------+
| "fOoBaR"  |
+-----------+

SELECT CONCAT('"', LTRIM(' fOoBaR '), '"') AS ltrim;
+------------+
|   ltrim    |
+------------+
| "fOoBaR "  |
+------------+

SELECT CONCAT('"', RTRIM(' fOoBaR '), '"') AS rtrim;
+------------+
|   rtrim    |
+------------+
| " fOoBaR"  |
+------------+

LPAD(STRING str, INT len, STRING pad)、RPAD(STRING str, INT len, STRING pad)

  • 定义:lpad(string str, int len, string pad) rpad(string str, int len, string pad)
  • 说明
    • lpad:在字符串左边填充指定的字符,使得填充后的字符串的长度为len;如果原字符串的长度>len,则去除原字符串右边的字符使其长度为len;如果填充字符是空字符串,则返回NULL。
    • rpad:在字符串左边填充指定的字符,使得填充后的字符串的长度为len;如果原字符串的长度>len,则去除原字符串右边的字符使其长度为len;如果填充字符是空字符串,则返回NULL。
  • 返回值类型:string
  • 案例
SELECT LPAD('HELLO', 10, '0');
+-------------+
|     _c0     |
+-------------+
| 00000HELLO  |
+-------------+

SELECT LPAD('HELLO', 4, '0');
+-------+
|  _c0  |
+-------+
| HELL  |
+-------+

SELECT LPAD('HELLO', 10, '');
+-------+
|  _c0  |
+-------+
| NULL  |
+-------+

SELECT RPAD('HELLO', 10, '0');
+-------------+
|     _c0     |
+-------------+
| 00000HELLO  |
+-------------+

SELECT RPAD('HELLO', 4, '0');
+-------+
|  _c0  |
+-------+
| HELL  |
+-------+

SELECT RPAD('HELLO', 10, '');
+-------+
|  _c0  |
+-------+
| NULL  |
+-------+

LOWER(STRING a)、LCASE(STRING a)

  • 定义:lower(string A) lcase(string A)
  • 说明:字符串转小写
  • 返回值类型:string
  • 案例
SELECT LOWER('fOoBaR'), LCASE('fOoBaR');

+---------+---------+
|   _c0   |   _c1   |
+---------+---------+
| foobar  | foobar  |
+---------+---------+

UPPER(STRING a)、UCASE(STRING a)

  • 定义:upper(string A) ucase(string A)
  • 说明:字符串转大写
  • 返回值类型:string
  • 案例
SELECT UPPER('fOoBaR'), UCASE('fOoBaR');

+---------+---------+
|   _c0   |   _c1   |
+---------+---------+
| FOOBAR  | FOOBAR  |
+---------+---------+

REPLACE(STRING a, STRING old, STRING new)

  • 定义:replace(string A, string OLD, string NEW)
  • 说明:把一个字符串中的所有OLD字符串替换成NEW字符串
  • 返回值类型:string
  • 可用版本:hive-1.3.0+、hive-2.1.0+
  • 案例
SELECT REPLACE("ababab", "abab", "Z");
+------+
| _c0  |
+------+
| Zab  |
+------+

SELECT REPLACE("ababab", "ab", "Z");
+------+
| _c0  |
+------+
| ZZZ  |
+------+

REGEXP_REPLACE(STRING initial_string, STRING pattern, STRING replacement)

  • 定义:regexp_replace(string INITIAL_STRING, string PATTERN, string REPLACEMENT)
  • 说明:在一个字符串中进行正则匹配,将匹配到的部分替换为REPLACEMENT
  • 返回值类型:string
  • 案例
-- 将oo或者ar替换为空字符串
SELECT REGEXP_REPLACE("foobar", "oo|ar", "");
+------+
| _c0  |
+------+
| fb   |
+------+

CONCAT(STRING|BINARY a, STRING|BINARY b) 和 ||

  • 定义:concat(string|binary A, string|binary B...)
  • 说明:连接多个字符串或多个字节数组,'A' || 'B' = concat('A', 'B')
  • 返回值类型:string
  • 案例
SELECT CONCAT("A", "B", "C");
+------+
| _c0  |
+------+
| ABC  |
+------+

SELECT "A" || "B" || "C";
+------+
| _c0  |
+------+
| ABC  |
+------+

CONCAT_WS(STRING sep, STRING a, STRING b...)

  • 定义:concat_ws(string SEP, string A, string B...)
  • 说明:连接多个字符串,连接符为sep
  • 返回值类型:string
  • 案例
SELECT CONCAT_WS("-", "A", "B", "C");
+--------+
|  _c0   |
+--------+
| A-B-C  |
+--------+

SPLIT(STRING str, STRING pat)

  • 定义:split(string str, string pat)
  • 说明:将字符传str根据正则表达式pat定义的规则拆分成数组
  • 返回值类型:array
  • 案例
SELECT SPLIT("Hello,World", ",");
+--------------------+
|        _c0         |
+--------------------+
| ["Hello","World"]  |
+--------------------+