hive字符串函数总结
常用的字符串函数由上到下排列,最后的几个函数由于没有理解或者由于版本原因没有给出例子
简介 | 函数名 | 返回类型 | 函数描述 | 举例 | 结果 |
字符串长度 | length(string A) | int | 返回字符串A的长度 |
| 7 |
字符串反转 | reverse(string A) | string | 返回字符串A的反转结果 |
| gfdecba |
字符串切割 | split(string str, string pat) | array | 按照pat字符串分割str,会返回分割后的字符串数组 |
| [“a”,“b”,“c”,“d”,“e”,“f”,“g”] |
字符串连接 | concat(string A, string B…) | string | 返回字符串连接后结果 |
| abcdefgh |
带分隔符的字符串连接 | concat_ws(string SEP, string A, string B) | string | 返回输入字符串以SEP为分隔符的拼接后的结果 |
| abc,def,gh |
带分隔符的字符串连接 | concat_ws(string SEP, array) | string | 返回输入字符串数组以SEP为分隔符的拼接后的结果 |
| abc,def,gh |
字符串截取 | substr(string A, int start) substring(string A, int start) | string | 返回字符串A从start位置到结尾的字符串 |
| cde cde e |
字符串截取 | substr(string A, int start, int len) substring(string A, int start, int len) | string | 返回字符串A从start位置,长度为len的字符串 |
| cd cd cd |
字符串转大写 | upper(string A) ucase(string A) | string | 返回字符串A的大写格式 |
| ABCDEF |
字符串转小写 | lower(string A) lcase(string A) | string | 返回字符串A的小写格式 |
| abcdef |
首字母大写其余字母小写 | initcap(string A) | string | 返回一个新字符串,每个单词的首字母大写,其他字母小写,每个单词由空格分隔 |
| Abcdef |
去两边空格 | trim(string A) | string | 去除字符串A两边的空格 |
| 12 8 |
去左边空格 | ltrim(string A) | string | 去除字符串A左边的空格 |
| 12 10 |
去右边空格 | rtrim(string A) | string | 去除字符串A右边的空格 |
| 12 10 |
将字符串转为map | str_to_map(text[, delimiter1, delimiter2]) | map<string, string> | 使用两个分隔符将文本拆分为键值对。Delimiter1 将文本分成 KV 对,Delimiter2 拆分每个 KV 对。默认分隔符是“,”用于 delimiter1,“:”用于 delimiter2。 |
| {“aa”:“1”,“bb”:“2”} |
使用正则替换字符串 | regexp_replace(string A, string B, string C) | string | 将字符串A中的符合java正则表达式B的部分替换为C[有些需要转义字符] |
| d4b2c3 fb |
使用正则提取字符串 | regexp_extract(string subject, string pattern, int index) | string | 将字符串subject按照pattern正则表达式的规则拆分,返回index指定的字符 |
| a0b0c3 a0b0c0 |
URL解析函数 | parse_url(string urlString, string partToExtract [, string keyToExtract]) | string | 返回URL中指定的部分,partToExtract的有效值为 [HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, USERINFO],还可以提供keyToExtract作为第三个参数提取partToExtract为QUERY中特定的值 |
| www.baidu.comroot |
JSON解析函数 | get_json_object(string json_string, string path) | string | 解析json的字符串(json_string),返回path指定的内容 |
| amy |
n个空格字符串 | space(int n) | string | 返回长度为n的空格字符串 |
| 10 |
重复字符串 | repeat(string str, int n) | string | 返回重复n次后的str字符串 |
| abcabcabc |
首字符的ASCII码 | ascii(string str) | int | 返回字符串str第一个字符的ASCII码 |
| 97 → ‘a’ |
向左补全 | lpad(string str, int len, string pad) | string | 返回 str,对str用 pad 左填充,长度为 len。如果 str 比 len 长,则返回值将缩短为 len 个字符。如果填充字符串为空,则返回值为空。 |
| 0000000abc |
向右补全 | rpad(string str, int len, string pad) | string | 返回 str,对str用 pad 右填充,长度为 len。如果 str 比 len 长,则返回值将缩短为 len 个字符。如果填充字符串为空,则返回值为空。 |
| abc0000000 |
在集合中查找字符串 | fine_in_set(string str, string strList) | int | 返回str在strList第一次出现的位置,其中strList是用逗号分隔的字符串。如果任一参数为null,则返回null。如果str中包含任何逗号,则返回0。 |
| 2 0 |
返回某个字符串 | elt(int N, string str1, string str2, string str3…) | string | 返回索引号N处的字符串。例如 elt(2,‘hello’,‘world’) 返回 ‘world’。如果 N 小于 1 或大于参数数量,则返回 NULL。 |
| 2 null null |
格式化数字 | format_number(int X, int d) | string | 将数字 X 格式化为类似 ‘#,###,###.##’ 的格式,四舍五入到 d 位小数,并将结果作为字符串返回。如果 d 为 0,则结果没有小数点或小数部分。 |
| 123.0 123,456,789.00000 |
查找第一次出现的子字符串 | intstr(string str, string substr) | int | 返回 | ||
从pos位置查找字符串 | locate(string substr, string str[, int pos]) | int | 返回位置 pos 之后 str 中第一次出现 substr 的位置。使用它可以查找第n次输出substr的位置。 |
| 2 5 |
断句 | sentences(string str, string lang, string locale) | array<array> | 将一串自然语言文本标记为单词和句子,其中每个句子在适当的句子边界处断开并作为单词数组返回。‘lang’ 和 ‘locale’ 是可选参数。例如,句子(‘Hello there! How are you?’) 返回 ( (“Hello”, “there”), (“How”, “are”, “you”) )。(‘lang’ 和 ‘locale’ 未理解) |
| [[“hello”,“world”],[“I’m”,“coming”]] |
context_ngrams(array<array>, array, int K, int pf) | array<struct<string,double>> | 给定一串“上下文”,从一组标记化的句子中返回前 k 个上下文 N-gram。有关详细信息,请参阅StatisticsAndDataMining。 | |||
translate(string input, string from, string to) | string | 通过用 | |||
levenshtein(string A, string B) | int | 计算两个字符之间的levenshtein距离。。例如, levenshtein(‘kitten’, ‘sitting’) 结果为 3。 | |||
quote(String text) | string | hive-4.0.0才有的。返回带引号的字符串。若输入的是null输出也是null。 |