Hive函數大全(含例子)之字符串函數(String Functions)

2020-12-10 種豆大叔

字符串函數 String Functions

ascii(string str)

返回結果: 返回字符串str首字母的十進位ascii碼返回類型: intselect ascii('ABC'); -- 結果為 65

base64(binary bin)

返回結果: 將二進位轉換為base64編碼返回類型: stringselect base64(encode('Uncle Bean', 'utf8')); -- 結果為 VW5jbGUgQmVhbg==select base64(encode('Melon-and-fruit-fields', 'utf-8')); -- 結果為 TWVsb24tYW5kLWZydWl0LWZpZWxkcw====

character_length(string str)

character_length 可縮寫為 char_length 返回結果: 返回str中包含的UTF-8字符數返回類型: intselect character_length('123456'); -- 結果為 6select char_length('ABCDEFGHIJK'); -- 結果為 11

chr(bigint|double A)

返回結果: 將數字A轉為對應的ascii字符, 如果A大於等於256,則結果同chr(A % 256)返回類型: stringselect chr(65); -- 結果為 Aselect chr(65.6); -- 結果為 Aselect chr(321); -- 結果為 Aselect chr(321 % 256); -- 結果為 A

concat(string|binary A, string|binary B...)

返回結果: 拼接字符串,函數接受任意數量的輸入返回類型: stringselect concat('A', 'C', 'B'); -- 結果為 ACBselect concat(encode('A', 'utf8'), encode('C', 'utf8'), encode('B', 'utf8')); -- 結果為 ACB

context_ngrams(array<array<string>>, array<string>, int K, int pf)

返回結果: 使用n-gram模型,通過指定array<string>,提取前K個上下文文本;pf越大,精度越高,同時消耗的內存資源也更大返回類型: array<struct<string,double>>select context_ngrams(array(array('from','a'),array('from','a'),array('from','b')), array('from', null), 1); -- 結果為 [{"ngram":["a"],"estfrequency":2.0}]select context_ngrams(array(array('from','a'),array('from','a'),array('from','b')), array('from', null), 2); -- 結果為 [{"ngram":["a"],"estfrequency":2.0},{"ngram":["b"],"estfrequency":1.0}]

concat_ws(string SEP, string A, string B...)

返回結果: 使用指定分隔符 SEP 拼接字符串,傳入參數為多個字符串返回類型: stringselect concat_ws('-', 'Melon', 'and', 'fruit', 'fields'); -- 結果為 Melon-and-fruit-fields

concat_ws(string SEP, array<string>)

返回結果: 使用指定分隔符 SEP 拼接字符串,傳入參數為 array返回類型: stringselect concat_ws('-', array('Melon', 'and', 'fruit', 'fields')); -- 結果為 Melon-and-fruit-fields

decode(binary bin, string charset)

返回結果: 解碼(字符集 charset 包括'US-ASCII', 'ISO-8859-1', 'UTF-8', 'UTF-16BE', 'UTF-16LE', 'UTF-16')返回類型: stringselect decode(encode('A', 'utf8'), 'UTF-8'); -- 結果為 A

elt(N int,str1 string,str2 string,str3 string,...)

返回結果: 返回第N個傳入參數,如果N小於1或者大於字符串參數的個數則返回NULL返回類型: stringselect elt(2, 'Melon', 'and', 'fruit', 'fields'); -- 結果為 andselect elt(5, 'Melon', 'and', 'fruit', 'fields'); -- 結果為 NULL

encode(string src, string charset)

返回結果: 編碼返回類型: binaryselect encode('A','UTF-8'); -- 結果為 Aselect encode('A','US-ASCII'); -- 結果為 A

field(val T,val1 T,val2 T,val3 T,...)

返回結果: 返回val在後續參數中出現的位置,如果val為NULL或者未找到則返回0返回類型: intselect field(11, 13, 12, 11); -- 結果為 3select field('a', 'c', 'b', 'a'); -- 結果為 3select field('d', 'c', 'b', 'a'); -- 結果為 0

find_in_set(string str, string strList)

返回結果: 返回str在strList中出現的位置,未找到或者str中包含逗號則返回0(strList是一個用逗號隔開的字符串)返回類型: intselect find_in_set('and', 'Melon,and,fruit,fields'); -- 結果為 2select find_in_set('And', 'Melon,and,fruit,fields'); -- 結果為 0select find_in_set('and,', 'Melon,and,fruit,fields'); -- 結果為 0select find_in_set(NULL, 'Melon,and,fruit,fields'); -- 結果為 NULL

format_number(number x, int d)

返回結果: 格式化數字x為包含d個小數位的數字,並用千分位表示返回類型: stringselect format_number(1234.16, 1); -- 結果為 1,234.2select format_number(1234.14, 1); -- 結果為 1,234.1

get_json_object(string json_string, string path)

返回結果: 提取json對象值返回類型: stringselect get_json_object('{"key":"value"}', '$.key'); -- 結果為 valueselect get_json_object('[{"key":"value"}, {"key":"value2"}]', '$[1].key'); -- 結果為 value2select get_json_object('["value3"]', '$[0]'); -- 結果為 value3

in_file(string str, string filename)

返回結果: 如果str是文件filename裡面的一行則返回true,否則返回false返回類型: booleanselect in_file('123', 'hdfs:/tmp/test/test.csv'); -- 結果為 trueselect in_file('12', 'hdfs:/tmp/test/test.csv'); -- 結果為 false/tmp/test/test.csv為hdfs上的文件,有兩行數據,第一行為123,第二行為456

instr(string str, string substr)

返回結果: 返回substr在str中第一次出現的位置,未出現則返回0(如果參數為NULL則返回NULL;位置從1開始)返回類型: intselect instr('1234', '23'); -- 結果為 2select instr('1234', '2345'); -- 結果為 0select instr('1234', NULL); -- 結果為 NULLselect instr(NULL, '23'); -- 結果為 NULL

length(string A)

返回結果: 返回字符串A的長度返回類型: intselect length('123'); -- 結果為 3select length(''); -- 結果為 0select length(NULL); -- 結果為 NULL

locate(string substr, string str[, int pos])

返回結果: 返回substr在str的pos-1位後第一次出現的位置返回類型: intselect locate('12', '1212'); -- 結果為 1select locate('12', '1212', 1); -- 結果為 1select locate('12', '1212', 2); -- 結果為 3

lower(string A) lcase(string A)

返回結果: 返回小寫的字符串A返回類型: stringselect lower('Aa'); -- 結果為 aaselect lcase('Aa'); -- 結果為 aa

lpad(string str, int len, string pad)

返回結果: 使用pad填充字符串str的左邊,使其長度變為len;如果字符串str的長度大於len,則str將被截斷;如果pad為空字符或者NULL,則返回NULL返回類型: stringselect lpad('123', 5, '0'); -- 結果為 00123select lpad('123', 2, '0'); -- 結果為 12select lpad('123', 5, ''); -- 結果為 NULL

ltrim(string A)

返回結果: 去掉字符串A左邊的空格返回類型: stringselect ltrim(' 123 3 '); -- 結果為 '123 3 '

ngrams(array<array<string>>, int N, int K, int pf)

返回結果: 提取前K個N-gram(N-gram就是一個長度為N的詞語組成的序列)返回類型: array<struct<string,double>>select ngrams(array(array('from','a'),array('from','a'),array('from','b')), 2, 1); -- 結果為 [{"ngram":["from","a"],"estfrequency":2.0}]select ngrams(array(array('from','a'),array('from','a'),array('from','b')), 1, 1); -- 結果為 [{"ngram":["from"],"estfrequency":3.0}]

octet_length(string str)

返回結果: 返回以UTF-8編碼保存字符串str所需的八位字節數返回類型: intselect octet_length('AAA1'); -- 結果為 15

parse_url(string urlString, string partToExtract [, string keyToExtract])

返回結果: 解析url(partToExtract包括HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, 以及USERINFO)返回類型: stringselect parse_url('https://github.com/TheUncleWhoGrowsBeans/Melon-and-fruit-fields', 'HOST'); -- 結果為 github.comselect parse_url('https://github.com/TheUncleWhoGrowsBeans/Melon-and-fruit-fields', 'PATH'); -- 結果為 /TheUncleWhoGrowsBeans/Melon-and-fruit-fieldsselect parse_url('http://hostname.com/path?k1=v1&k2=v2#ref1', 'REF'); -- 結果為 ref1select parse_url('http://hostname.com/path?k1=v1&k2=v2#ref1', 'QUERY', 'k2'); -- 結果為 v2

printf(String format, Obj... args)

返回結果: 返回printf-style的字符串返回類型: stringselect printf('%s%d歲了', 'Uncle Bean', 1); -- 結果為 Uncle Bean1歲了

quote(String text)

返回結果: 返回帶引號的字符串返回類型: stringselect quote('Uncle Bean'); -- 結果為 'Uncle Bean'

regexp_extract(string subject, string pattern, int index)

返回結果: 正則提取返回類型: stringselect regexp_extract('http://hostname.com/path?k1=v1&k2=v2#ref1', 'http://([0-9a-zA-z]+.[0-9a-zA-z]+)/', 1); -- 結果為 hostname.com

regexp_replace(string INITIAL_STRING, string PATTERN, string REPLACEMENT)

返回結果: 正則替換返回類型: stringselect regexp_replace('我1不23要456數7890字', '[0-9]+', ''); -- 結果為 我不要數字

repeat(string str, int n)

返回結果: 返回重複n次str後的字符串返回類型: stringselect repeat('a', 3); -- 結果為 aaa

replace(string A, string OLD, string NEW)

返回結果: 替換返回類型: stringselect replace('123123', '123', 'haha'); -- 結果為 hahahaha

reverse(string A)

返回結果: 反轉字符串A返回類型: stringselect reverse('1234'); -- 結果為 4321

rpad(string str, int len, string pad)

返回結果: 使用pad填充字符串str的右邊,使其長度變為len;如果字符串str的長度大於len,則str將被截斷;如果pad為空字符或者NULL,則返回NULL返回類型: stringselect rpad('123', 5, '0'); -- 結果為 12300select rpad('123', 2, '0'); -- 結果為 12select rpad('123', 5, ''); -- 結果為 NULL

rtrim(string A)

返回結果: 去掉字符串A右邊的空格返回類型: stringselect rtrim('1 123 '); -- 結果為 1 123

sentences(string str, string lang, string locale)

返回結果: 將自然語言文本串標記為單詞和句子(分詞)返回類型: array<array<string>>select sentences('Hello Bean! How are you?'); -- 結果為 [["Hello","Bean"],["How","are","you"]]

space(int n)

返回結果: 返回n個空格的字符串返回類型: stringselect concat('->', space(3), '<-'); -- 結果為 -> <-

split(string str, string pat)

返回結果: 使用指定分隔符pat拆分字符串str返回類型: arrayselect split('123123', '2'); -- 結果為 ["1","31","3"]select split('123123', '12'); -- 結果為 ["","3","3"]

str_to_map(text[, delimiter1, delimiter2])

返回結果: 將字符串轉換為map返回類型: map<string,string>select str_to_map('k1:v1,k2:v2'); -- 結果為 {"k1":"v1","k2":"v2"}

substr(string|binary A, int start) substring(string|binary A, int start)

返回結果: 截取字符串返回類型: substrselect substr('12345', 2); -- 結果為 2345select substring('12345', 2); -- 結果為 2345

substr(string|binary A, int start, int len) substring(string|binary A, int start, int len)

返回結果: 截取字符串返回類型: stringselect substr('12345', 2, 3); -- 結果為 234select substring('12345', 2, 3); -- 結果為 234

substring_index(string A, string delim, int count)

返回結果: 根據delim將字符串A分為多個部分,然後根據count返回部分字符串返回類型: stringselect substring_index('1.2.3', '.', 2); -- 結果為 1.2select substring_index('1.2.3', '.', -2); -- 結果為 2.3

translate(string|char|varchar input, string|char|varchar from, string|char|varchar to)

返回結果: 將出現在from中的每個字符替換為to中的相應字符;若from比to長,那麼在from中比to中多出的字符將會被刪除返回類型: stringselect translate('abc不是ab', 'abc', 'd'); -- 結果為 d不是dselect translate('abc不是a,也不是b,也不是c', 'abc', 'd'); -- 結果為 d不是d,也不是,也不是

trim(string A)

返回結果: 去掉字符串A左右兩邊的空格返回類型: stringselect concat('->', trim(' 1 1 '), '<-'); -- 結果為 ->1 1<-

unbase64(string str)

返回結果: base64解碼返回類型: binaryselect unbase64('VW5jbGUgQmVhbg=='); -- 結果為 Uncle Bean

upper(string A) ucase(string A)

返回結果: 返回大寫的字符串A返回類型: stringselect upper('aa'); -- 結果為 AAselect ucase('aa'); -- 結果為 AA

initcap(string A)

返回結果: 轉換為首字母大寫的字符串A返回類型: stringselect initcap('the uncle who grows beans'); -- 結果為 The Uncle Who Grows Beans

levenshtein(string A, string B)

返回結果: 返回兩個字符串之間的Levenshtein距離(也稱編輯距離,指的是兩個字符串之間,由一個轉換成另一個所需的最少編輯操作次數)返回類型: intselect levenshtein('hehe', 'haha'); -- 結果為 2

soundex(string A)

返回結果: 返回字符串的soundex代碼返回類型: stringselect soundex('Uncle Bean'); -- 結果為 U524

相關文章

Hive函數大全之集合函數、日期函數、條件函數(含例子)

Hive函數大全之數學函數(含例子)

相關焦點

  • Hive函數大全(含例子)之數據屏蔽函數、雜項函數、XML解析函數
    ****mask_first_n(string str[, int n])返回結果: 屏蔽字符串str的前n個字符返回類型: stringselect mask_first_n(Hive函數大全之數學函數(含例子)
  • 【乾貨】Hive常用函數大全
    ,gh5、字符串截取函數:substr,substring語法: substr(string A, int start),substring(string A, int start)返回值: string說明:返回字符串A從start位置到結尾的字符串舉例:hive> select
  • hive函數
    :數學函數,字符函數,日期函數,條件函數,聚合函數。數學函數round():四捨五入floor(): 向下取整ceil():  向上取整rand():  隨機數mod():取餘字符函數length(string1):長度concat(string1,string2):拼接concat_ws
  • Stata函數之字符串函數(一)
    今天我們介紹Stata中字符串函數(string functions)的知識。在處理數據的過程中,好處理的數據(不論是整數還是浮點數)通常都好處理,你可以很方便的對其加減乘除、統計、應用計量模型等;但不好處理的數據通常讓人抓狂。字符串就屬於不好處理的數據。事實上,我們遇到的大多數原始數據(raw data)都是字符串形式的。
  • Hive(七) ----函數
    函數內置函數-- 查看系統自帶函數 show functions;-- 顯示自帶函數的用法desc function upper;desc function extended upper;時間函數-- 當前前日期select current_date;select unix_timestamp();
  • 雙語速讀:計算機科學-Perl字符串長度函數
    當您學習Perl時,您將學習如何使用該語言的函數。最基本的函數之一是字符串長度函數。Perl is a programming language used primarily to develop web applications. Perl is an interpreted, not compiled, language.
  • 常用Hive函數的學習和總結
    說明:解析json的字符串json_string,返回path指定的內容。如果輸入的json字符串無效,那麼返回NULL。(string A, int start, int len)返回值: string說明:返回字符串 A 從 start 位置開始,長度為 len 的字符串語法: json_tuple(string json_string, col1, col2, …) ,經常和lateral
  • Hive SQL 第一篇:常用的內置函數
    ❝最近使用 hive sql比較多,碰到了很多函數操作,所以想簡單總結一下 hive sql 常用的函數用法,沉澱一下以便之後查閱,希望也能給大家提供一些參考。❞字符串函數字符串拼接函數-- 返回多個字符串拼接後的結果,返回string類型-- 用法concat(string a, string b...)
  • HiveSql基礎函數使用(一)
    一、hive函數1、關係函數2、日期函數3、條件函數4、字符串函數5、統計函數二、hiveQL,可以用於判斷多種條件;次之是if函數,屬於二分判斷;最後是coalesce函數,該函數只能對空值和非空進行判斷。
  • Hive常用的函數總結
    靈活地運用Hive提供的函數能夠極大地節省數據分析成本。Hive函數主要包含數學函數,集合函數,類型轉換函數,日期函數,條件函數,字符串函數,聚合函數和表生成函數等。1、數學函數        數學函數是Hive內部提供的專門用於數學運算的函數,如round()函數和sqrt()函數等。
  • VBA字符串函數,你想學的都在這裡
    ",1,3) 則返回 "歡迎你"1.4 LTrim/RTrim/Trim函數LTrim函數: 刪除字符串前面的空格;RTrim函數: 刪除字符串後面的空格;Trim函數: 刪除兩頭的空格。>函數string(個數,字符)  :返回[個數]個[字符] 例如 : string(3,"小") 則返回 "小小小" 注意:
  • 字符串中間截取函數(Mid)、長度函數(Len)與查找函數(Instr)
    今日的內容是「VBA之EXCEL應用」的第九章「字符串(String)的操作」。
  • PostgreSQL字符串函數
    PostgreSQL的字符串函數主要用於字符串操作。下表詳細介紹了重要的字符串函數:+ 1 row in set (0.00 sec) BIT_LENGTH(str)返回位字符串QUOTE_IDENT(string text), QUOTE_LITERAL(string text), QUOTE_LITERAL(value anyelement), QUOTE_NULLABLE(value anyelement)All these functions return the given string suitably
  • 對比python字符串函數,輕鬆學習pandas的 str 矢量化字符串函數
    我們不僅要學會怎麼處理單個字符串,這個就需要學習「python字符串函數」,我們還要學會怎麼處理二維表格中每一列每一格的字符串,這個就需要學習「pandas的str矢量化字符串函數」。今天我們採用對比的方式,帶大家總結常用的字符串函數,希望這篇文章能夠對大家起到很好的作用。
  • PHP字符串替換函數strtr()的功能實現講解
    我們今天要向大家講的內容是有關PHP字符串替換函數strtr()的相關介紹。對於初學者來說,對於PHP字符串替換函數strtr()的了解還比較淺顯,希望通過本文介紹的內容能夠讓大家深入了解這個函數的具體意義。
  • PHP4.04 新增加了專用的字符函數 Ctype
    PHP4.04 新增加了專用的字符函數 Ctype CharactertypefunctionsThesefunctionscheckwhetheracharacterorstringfallsintoacertaincharacterclassaccordingtotheicurrentlocale
  • 介紹「十六進位數字符串至數值轉換」函數
    有幾點需要注意:本文引用地址:http://www.eepw.com.cn/article/201701/337016.htm1:雖然該函數的輸入端子「string」的值可以是十六進位數、字符串(ASCII)或其他進位數,但是「string」的值流入該函數中時,先轉換成字符串(ASCII)。
  • php字符串函數匯總
    php字符串函數有哪些?php字符串函數:addcslashes — 以 C 語言風格使用反斜線轉義字符串中的字符addslashes — 使用反斜線引用字符串bin2hex — 函數把包含數據的二進位字符串轉換為十六進位值chop — rtrim 的別名
  • EXCEL函數公式大全之利用LEFT函數MID函數RIGHT函數統一添加字符
    EXCEL函數公式大全之利用LEFT函數、MID函數和RIGHT函數的組合統一在字符串的指定位置添加指定字符。EXCEL函數與公式在工作中使用非常的頻繁,會不會使用公式直接決定了我們的工作效率,今天我們來學習一下提高我們工作效率的函數LEFT函數、MID函數和RIGHT函數。在前面的課程中我們學習過了,在字符串的指定位置刪除特定字符。
  • 對比python字符串函數,學習pandas的str矢量化字符串函數
    我們不僅要學會怎麼處理單個字符串,這個就需要學習「python字符串函數」,我們還要學會怎麼處理二維表格中每一列每一格的字符串,這個就需要學習「pandas的str矢量化字符串函數」。今天我們採用對比的方式,帶大家總結常用的字符串函數,希望這篇文章能夠對大家起到很好的作用。