字符串函數(shù) String Functions
ascii(string str)
- 返回結(jié)果: 返回字符串str首字母的十進(jìn)制ascii碼
- 返回類型: int
-
select ascii('ABC');
-- 結(jié)果為 65
base64(binary bin)
- 返回結(jié)果: 將二進(jìn)制轉(zhuǎn)換為base64編碼
- 返回類型: string
-
select base64(encode('Uncle Bean', 'utf8'));
-- 結(jié)果為 VW5jbGUgQmVhbg== -
select base64(encode('Melon-and-fruit-fields', 'utf-8'));
-- 結(jié)果為 TWVsb24tYW5kLWZydWl0LWZpZWxkcw====
character_length(string str)
- character_length 可縮寫為 char_length
- 返回結(jié)果: 返回str中包含的UTF-8字符數(shù)
- 返回類型: int
-
select character_length('123456');
-- 結(jié)果為 6 -
select char_length('ABCDEFGHIJK');
-- 結(jié)果為 11
chr(bigint|double A)
- 返回結(jié)果: 將數(shù)字A轉(zhuǎn)為對(duì)應(yīng)的ascii字符, 如果A大于等于256洽糟,則結(jié)果同chr(A % 256)
- 返回類型: string
-
select chr(65);
-- 結(jié)果為 A -
select chr(65.6);
-- 結(jié)果為 A -
select chr(321);
-- 結(jié)果為 A -
select chr(321 % 256);
-- 結(jié)果為 A
concat(string|binary A, string|binary B...)
- 返回結(jié)果: 拼接字符串,函數(shù)接受任意數(shù)量的輸入
- 返回類型: string
-
select concat('A', 'C', 'B');
-- 結(jié)果為 ACB -
select concat(encode('A', 'utf8'), encode('C', 'utf8'), encode('B', 'utf8'));
-- 結(jié)果為 ACB
context_ngrams(array<array<string>>, array<string>, int K, int pf)
- 返回結(jié)果: 使用n-gram模型,通過指定array<string>坤溃,提取前K個(gè)上下文文本拍霜;pf越大,精度越高薪介,同時(shí)消耗的內(nèi)存資源也更大
- 返回類型: array<struct<string,double>>
-
select context_ngrams(array(array('from','a'),array('from','a'),array('from','b')), array('from', null), 1);
-- 結(jié)果為 [{"ngram":["a"],"estfrequency":2.0}] -
select context_ngrams(array(array('from','a'),array('from','a'),array('from','b')), array('from', null), 2);
-- 結(jié)果為 [{"ngram":["a"],"estfrequency":2.0},{"ngram":["b"],"estfrequency":1.0}]
concat_ws(string SEP, string A, string B...)
- 返回結(jié)果: 使用指定分隔符 SEP 拼接字符串祠饺,傳入?yún)?shù)為多個(gè)字符串
- 返回類型: string
-
select concat_ws('-', 'Melon', 'and', 'fruit', 'fields');
-- 結(jié)果為 Melon-and-fruit-fields
concat_ws(string SEP, array<string>)
- 返回結(jié)果: 使用指定分隔符 SEP 拼接字符串,傳入?yún)?shù)為 array
- 返回類型: string
-
select concat_ws('-', array('Melon', 'and', 'fruit', 'fields'));
-- 結(jié)果為 Melon-and-fruit-fields
decode(binary bin, string charset)
- 返回結(jié)果: 解碼(字符集 charset 包括'US-ASCII', 'ISO-8859-1', 'UTF-8', 'UTF-16BE', 'UTF-16LE', 'UTF-16')
- 返回類型: string
-
select decode(encode('A', 'utf8'), 'UTF-8');
-- 結(jié)果為 A
elt(N int,str1 string,str2 string,str3 string,...)
- 返回結(jié)果: 返回第N個(gè)傳入?yún)?shù)汁政,如果N小于1或者大于字符串參數(shù)的個(gè)數(shù)則返回NULL
- 返回類型: string
-
select elt(2, 'Melon', 'and', 'fruit', 'fields');
-- 結(jié)果為 and -
select elt(5, 'Melon', 'and', 'fruit', 'fields');
-- 結(jié)果為 NULL
encode(string src, string charset)
- 返回結(jié)果: 編碼
- 返回類型: binary
-
select encode('A','UTF-8');
-- 結(jié)果為 A -
select encode('A','US-ASCII');
-- 結(jié)果為 A
field(val T,val1 T,val2 T,val3 T,...)
- 返回結(jié)果: 返回val在后續(xù)參數(shù)中出現(xiàn)的位置道偷,如果val為NULL或者未找到則返回0
- 返回類型: int
-
select field(11, 13, 12, 11);
-- 結(jié)果為 3 -
select field('a', 'c', 'b', 'a');
-- 結(jié)果為 3 -
select field('d', 'c', 'b', 'a');
-- 結(jié)果為 0
find_in_set(string str, string strList)
- 返回結(jié)果: 返回str在strList中出現(xiàn)的位置,未找到或者str中包含逗號(hào)則返回0(strList是一個(gè)用逗號(hào)隔開的字符串)
- 返回類型: int
-
select find_in_set('and', 'Melon,and,fruit,fields');
-- 結(jié)果為 2 -
select find_in_set('And', 'Melon,and,fruit,fields');
-- 結(jié)果為 0 -
select find_in_set('and,', 'Melon,and,fruit,fields');
-- 結(jié)果為 0 -
select find_in_set(NULL, 'Melon,and,fruit,fields');
-- 結(jié)果為 NULL
format_number(number x, int d)
- 返回結(jié)果: 格式化數(shù)字x為包含d個(gè)小數(shù)位的數(shù)字记劈,并用千分位表示
- 返回類型: string
-
select format_number(1234.16, 1);
-- 結(jié)果為 1,234.2 -
select format_number(1234.14, 1);
-- 結(jié)果為 1,234.1
get_json_object(string json_string, string path)
- 返回結(jié)果: 提取json對(duì)象值
- 返回類型: string
-
select get_json_object('{"key":"value"}', '$.key');
-- 結(jié)果為 value -
select get_json_object('[{"key":"value"}, {"key":"value2"}]', '$[1].key');
-- 結(jié)果為 value2 -
select get_json_object('["value3"]', '$[0]');
-- 結(jié)果為 value3
in_file(string str, string filename)
- 返回結(jié)果: 如果str是文件filename里面的一行則返回true勺鸦,否則返回false
- 返回類型: boolean
-
select in_file('123', 'hdfs:/tmp/test/test.csv');
-- 結(jié)果為 true -
select in_file('12', 'hdfs:/tmp/test/test.csv');
-- 結(jié)果為 false - /tmp/test/test.csv為hdfs上的文件,有兩行數(shù)據(jù)目木,第一行為123换途,第二行為456
instr(string str, string substr)
- 返回結(jié)果: 返回substr在str中第一次出現(xiàn)的位置,未出現(xiàn)則返回0(如果參數(shù)為NULL則返回NULL刽射;位置從1開始)
- 返回類型: int
-
select instr('1234', '23');
-- 結(jié)果為 2 -
select instr('1234', '2345');
-- 結(jié)果為 0 -
select instr('1234', NULL);
-- 結(jié)果為 NULL -
select instr(NULL, '23');
-- 結(jié)果為 NULL
length(string A)
- 返回結(jié)果: 返回字符串A的長度
- 返回類型: int
-
select length('123');
-- 結(jié)果為 3 -
select length('');
-- 結(jié)果為 0 -
select length(NULL);
-- 結(jié)果為 NULL
locate(string substr, string str[, int pos])
- 返回結(jié)果: 返回substr在str的pos-1位后第一次出現(xiàn)的位置
- 返回類型: int
-
select locate('12', '1212');
-- 結(jié)果為 1 -
select locate('12', '1212', 1);
-- 結(jié)果為 1 -
select locate('12', '1212', 2);
-- 結(jié)果為 3
lower(string A) lcase(string A)
- 返回結(jié)果: 返回小寫的字符串A
- 返回類型: string
-
select lower('Aa');
-- 結(jié)果為 aa -
select lcase('Aa');
-- 結(jié)果為 aa
lpad(string str, int len, string pad)
- 返回結(jié)果: 使用pad填充字符串str的左邊军拟,使其長度變?yōu)閘en;如果字符串str的長度大于len誓禁,則str將被截?cái)嘈赶ⅲ蝗绻鹥ad為空字符或者NULL,則返回NULL
- 返回類型: string
-
select lpad('123', 5, '0');
-- 結(jié)果為 00123 -
select lpad('123', 2, '0');
-- 結(jié)果為 12 -
select lpad('123', 5, '');
-- 結(jié)果為 NULL
ltrim(string A)
- 返回結(jié)果: 去掉字符串A左邊的空格
- 返回類型: string
-
select ltrim(' 123 3 ');
-- 結(jié)果為 '123 3 '
ngrams(array<array<string>>, int N, int K, int pf)
- 返回結(jié)果: 提取前K個(gè)N-gram(N-gram就是一個(gè)長度為N的詞語組成的序列)
- 返回類型: array<struct<string,double>>
-
select ngrams(array(array('from','a'),array('from','a'),array('from','b')), 2, 1);
-- 結(jié)果為 [{"ngram":["from","a"],"estfrequency":2.0}] -
select ngrams(array(array('from','a'),array('from','a'),array('from','b')), 1, 1);
-- 結(jié)果為 [{"ngram":["from"],"estfrequency":3.0}]
octet_length(string str)
- 返回結(jié)果: 返回以UTF-8編碼保存字符串str所需的八位字節(jié)數(shù)
- 返回類型: int
-
select octet_length('AAA1');
-- 結(jié)果為 15
parse_url(string urlString, string partToExtract [, string keyToExtract])
- 返回結(jié)果: 解析url(partToExtract包括HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, 以及USERINFO)
- 返回類型: string
-
select parse_url('https://github.com/TheUncleWhoGrowsBeans/Melon-and-fruit-fields', 'HOST');
-- 結(jié)果為 github.com -
select parse_url('https://github.com/TheUncleWhoGrowsBeans/Melon-and-fruit-fields', 'PATH');
-- 結(jié)果為 /TheUncleWhoGrowsBeans/Melon-and-fruit-fields -
select parse_url('http://hostname.com/path?k1=v1&k2=v2#ref1', 'REF');
-- 結(jié)果為 ref1 -
select parse_url('http://hostname.com/path?k1=v1&k2=v2#ref1', 'QUERY', 'k2');
-- 結(jié)果為 v2
printf(String format, Obj... args)
- 返回結(jié)果: 返回printf-style的字符串
- 返回類型: string
-
select printf('%s%d歲了', 'Uncle Bean', 1);
-- 結(jié)果為 Uncle Bean1歲了
quote(String text)
- 返回結(jié)果: 返回帶引號(hào)的字符串
- 返回類型: string
-
select quote('Uncle Bean');
-- 結(jié)果為 'Uncle Bean'
regexp_extract(string subject, string pattern, int index)
- 返回結(jié)果: 正則提取
- 返回類型: string
-
select regexp_extract('http://hostname.com/path?k1=v1&k2=v2#ref1', 'http://([0-9a-zA-z]+.[0-9a-zA-z]+)/', 1);
-- 結(jié)果為 hostname.com
regexp_replace(string INITIAL_STRING, string PATTERN, string REPLACEMENT)
- 返回結(jié)果: 正則替換
- 返回類型: string
-
select regexp_replace('我1不23要456數(shù)7890字', '[0-9]+', '');
-- 結(jié)果為 我不要數(shù)字
repeat(string str, int n)
- 返回結(jié)果: 返回重復(fù)n次str后的字符串
- 返回類型: string
-
select repeat('a', 3);
-- 結(jié)果為 aaa
replace(string A, string OLD, string NEW)
- 返回結(jié)果: 替換
- 返回類型: string
-
select replace('123123', '123', 'haha');
-- 結(jié)果為 hahahaha
reverse(string A)
- 返回結(jié)果: 反轉(zhuǎn)字符串A
- 返回類型: string
-
select reverse('1234');
-- 結(jié)果為 4321
rpad(string str, int len, string pad)
- 返回結(jié)果: 使用pad填充字符串str的右邊现横,使其長度變?yōu)閘en漓拾;如果字符串str的長度大于len,則str將被截?cái)嘟潇簦蝗绻鹥ad為空字符或者NULL骇两,則返回NULL
- 返回類型: string
-
select rpad('123', 5, '0');
-- 結(jié)果為 12300 -
select rpad('123', 2, '0');
-- 結(jié)果為 12 -
select rpad('123', 5, '');
-- 結(jié)果為 NULL
rtrim(string A)
- 返回結(jié)果: 去掉字符串A右邊的空格
- 返回類型: string
-
select rtrim('1 123 ');
-- 結(jié)果為 1 123
sentences(string str, string lang, string locale)
- 返回結(jié)果: 將自然語言文本串標(biāo)記為單詞和句子(分詞)
- 返回類型: array<array<string>>
-
select sentences('Hello Bean! How are you?');
-- 結(jié)果為 [["Hello","Bean"],["How","are","you"]]
space(int n)
- 返回結(jié)果: 返回n個(gè)空格的字符串
- 返回類型: string
-
select concat('->', space(3), '<-');
-- 結(jié)果為 -> <-
split(string str, string pat)
- 返回結(jié)果: 使用指定分隔符pat拆分字符串str
- 返回類型: array
-
select split('123123', '2');
-- 結(jié)果為 ["1","31","3"] -
select split('123123', '12');
-- 結(jié)果為 ["","3","3"]
str_to_map(text[, delimiter1, delimiter2])
- 返回結(jié)果: 將字符串轉(zhuǎn)換為map
- 返回類型: map<string,string>
-
select str_to_map('k1:v1,k2:v2');
-- 結(jié)果為 {"k1":"v1","k2":"v2"}
substr(string|binary A, int start) substring(string|binary A, int start)
- 返回結(jié)果: 截取字符串
- 返回類型: substr
-
select substr('12345', 2);
-- 結(jié)果為 2345 -
select substring('12345', 2);
-- 結(jié)果為 2345
substr(string|binary A, int start, int len) substring(string|binary A, int start, int len)
- 返回結(jié)果: 截取字符串
- 返回類型: string
-
select substr('12345', 2, 3);
-- 結(jié)果為 234 -
select substring('12345', 2, 3);
-- 結(jié)果為 234
substring_index(string A, string delim, int count)
- 返回結(jié)果: 根據(jù)delim將字符串A分為多個(gè)部分,然后根據(jù)count返回部分字符串
- 返回類型: string
-
select substring_index('1.2.3', '.', 2);
-- 結(jié)果為 1.2 -
select substring_index('1.2.3', '.', -2);
-- 結(jié)果為 2.3
translate(string|char|varchar input, string|char|varchar from, string|char|varchar to)
- 返回結(jié)果: 將出現(xiàn)在from中的每個(gè)字符替換為to中的相應(yīng)字符姜盈;若from比to長低千,那么在from中比to中多出的字符將會(huì)被刪除
- 返回類型: string
-
select translate('abc不是ab', 'abc', 'd');
-- 結(jié)果為 d不是d -
select translate('abc不是a,也不是b,也不是c', 'abc', 'd');
-- 結(jié)果為 d不是d,也不是,也不是
trim(string A)
- 返回結(jié)果: 去掉字符串A左右兩邊的空格
- 返回類型: string
-
select concat('->', trim(' 1 1 '), '<-');
-- 結(jié)果為 ->1 1<-
unbase64(string str)
- 返回結(jié)果: base64解碼
- 返回類型: binary
-
select unbase64('VW5jbGUgQmVhbg==');
-- 結(jié)果為 Uncle Bean
upper(string A) ucase(string A)
- 返回結(jié)果: 返回大寫的字符串A
- 返回類型: string
-
select upper('aa');
-- 結(jié)果為 AA -
select ucase('aa');
-- 結(jié)果為 AA
initcap(string A)
- 返回結(jié)果: 轉(zhuǎn)換為首字母大寫的字符串A
- 返回類型: string
-
select initcap('the uncle who grows beans');
-- 結(jié)果為 The Uncle Who Grows Beans
levenshtein(string A, string B)
- 返回結(jié)果: 返回兩個(gè)字符串之間的Levenshtein距離(也稱編輯距離,指的是兩個(gè)字符串之間馏颂,由一個(gè)轉(zhuǎn)換成另一個(gè)所需的最少編輯操作次數(shù))
- 返回類型: int
-
select levenshtein('hehe', 'haha');
-- 結(jié)果為 2
soundex(string A)
- 返回結(jié)果: 返回字符串的soundex代碼
- 返回類型: string
-
select soundex('Uncle Bean');
-- 結(jié)果為 U524