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

2020-12-23 種豆大叔

字符串函數 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函數大全之數學函數(含例子)

相關焦點

  • HiveSql基礎函數使用(一)
    一、hive函數1、關係函數2、日期函數3、條件函數4、字符串函數5、統計函數二、hiveQL1、DDL2、DML三、其它1、in()函數2、lateral view 函數3、row_number() 和rank
  • Python字符串函數用法大全
    語法:str.rfind(sub,start,end) -> int 返回整數註:rfind()函數用法與find()函數相似,rfind()函數返回指定子字符串最後一次出現的位置,find()函數返回指定子字符串第一次出現的位置。
  • MySQL函數基礎——字符串函數詳解
    昨天,咱們對MySQL的數學函數進行了講解,今天,咱們再來解析MySQL字符串函數。字符串函數主要用來處理資料庫中的字符串數據,MySQL中字符串函數有:計算字符串長度函數、字符串合併函數、字符串替換函數、字符串比較函數、查找指定字符串位置函數等。
  • 變量類型測試函數的使用:四、is_string的用法
    昨天剛講完PHP變量類型測試函數【is_float】的用法,今天來講講PHP變量類型測試函數【is_string】的用法。其他的變量類型測試函數的用法,點擊頭像查看更多;is_stringis_string — 檢測變量是否是字符串is_string 描述is_string ( mixed $var ) : bool
  • Go語言學習筆記之字符串一
    (str) fmt.Println( strings.HasPrefix(str, "Th")) //Contains 函數判斷字符串包含關係\ fmt.Println("\nContains函數判斷字符串包含關係:") str4 := "Ajian loves python and goland" fmt.Println(str4) fmt.Println(strings.Contains
  • 巧妙利用LEN、SUBSTITUTE函數,計算EXCEL單元格內某重複字符個數
    為此,一些函數的應用我可能會有重複講解的時候,還望掌握好的朋友多諒解。今天就是應一位朋友的反饋再講一次某些函數組合的應用。這位朋友提出的問題是:如何很快的計算出某單元格內某個重複字符的個數。對於這個問題,講解中會用到LEN函數和SUBSTITUTE函數,老規矩,我們還是先複習一下這兩個函數的用法。一 LEN函數 LEN函數作用是返回文本串的字符數。
  • 分離中英文字符函數
    1、按字節截取字符 LEFTB(A2,4) 公式中4是要截取的字符包含的字節總數,在電腦中,1個漢字為2個字節。2、分離中英文字符函數公式 =LEFT(A2,LENB(A2)-LEN(A2) 公式主要意思是字符串包含的字節數與字符數的差值,就是這個字符串包含的雙字節字符(漢字)的個數。因為在電腦中,1個漢字佔2個字節,1個英文字母佔1個字節。他們的差值就是漢字的字節。
  • Excel字符函數(5):REPLACE、SUBSTITUTE查找替換函數之區別
    文本字符串中用 new_text 替換 old_text。如果需要在某一文本字符串中替換指定的文本,使用函數 SUBSTITUTE;如果需要在某一文本字符串中替換特定位置處的任意文本,使用函數 REPLACE下圖中,REPLACE函數,從A2單元格的第4位取1位,替換為「」空字符(等同於刪除小圓點.)
  • 根據商品包裝規格求件裝數,函數篇
    整體思路:我們根據商品的包裝規格,先得出字符串中一共有幾個「*」號,再定位出最後一個「*」號(不管是1個「*」號還是2個「*」)在本字符串的位置,也就是最後一個「*」號位於字符串的第幾個字符,然後利用字符串的總長度減去上一步計算出的第幾個字符位數,即可得出每種商品的件裝數,最後利用Right()函數取出就可以得出商品件裝數。
  • 「Excel技巧」提取字符函數三兄弟:left、mid、right函數
    今天主要分享Excel中用來截取字符串的函數三兄弟,分別為Left函數、mid函數、right函數。它們的共同點是:都是用來截取字符串;區別在於:開始截取的位置不一樣。Left函數:從最左邊往右開始提取字符。mid函數:從中間指定位置開始提取字符。
  • Python - 超級好用的函數eval
    前言eval是Python的一個內置函數,這個函數的作用是,返回傳入字符串的表達式的結果。即變量賦值時,等號右邊的表示是寫成字符串的格式,返回值就是這個表達式的結果。每個函數都有著自已的名字空間,叫做局部名字空間,它記錄了函數的變量,包括函數的參數和局部定義的變 量。每個模塊擁有它自已的名字空間,叫做全局名字空間,它記錄了模塊的變量,包括函數、類、其它導入的模塊、模塊級的變量和常量。還有就是內置名字空間, 任何模塊均可訪問它,它存放著內置的函數和異常。
  • Excel批量提取指定數據——函數篇
    ,也就是第幾個字符,然後利用mid()函數從左括號位置+1位開始截取,截取多長呢?由於QQ號碼的位數也不固定,那我們就利用len()函數算出每行字符的總長度,然後利用這個總長度減去利用find()函數算出來的位置數(也就是左括號以左的字符長度),然後再減去1,這個減1是減掉右括號。
  • Excel Left函數與LeftB函數使用方法,含截取到倒數指定字符實例
    如果要從左邊開始截取字符,在 Excel 中,可以用 Left函數和 LeftB函數;其中 Left函數是按字符個數截取,LeftB函數是按字節個數截取;它們的區別在於,Left函數把每個漢字算一個字符,而 LeftB函數把每個漢字算兩個字節;每個數字和字母,它們都算一個。
  • Excel Substitute函數使用方法,含嵌套一次替換多個不同字符實例
    在 Excel 中,一共有兩個替換字符的函數,一個是Substitute函數,另一個是Replace函數;前者是用新字符替換舊字符,後者是用新字符替換指定字符數。Substitute函數既可以替換源文本中所有指定字符,又可以替換某個指定字符,並且還能嵌套使用以實現一次替換多個不同字符。
  • EXCEL函數公式大全之利用TODAY函數NETWORKDAYS函數製作倒計時
    EXCEL函數公式大全之利用TODAY函數NETWORKDAYS函數製作工作日期倒計時。excel函數與公式在工作中使用非常的頻繁,會不會使用公式直接決定了我們的工作效率,今天我們來學習一下提高我們工作效率的函數TODAY函數和NETWORKDAYS函數的組合。
  • 程式設計師的術與道:術——編程基本功之字符串操作
    找到字符串的開頭很容易,知道它的名字(字符數組名或者字符串名)就可以;在C語言中,字符串總是以'\0'作為結尾,所以'\0'也被稱為字符串結束標誌,或者字符串結束符。2.字符串基本操作字符串常用操作包括:字符串輸入字符串輸出字符串長度複製字符串字符串連接
  • Python 基礎(字符串)
    字符串的兩種定義方式1、通過內置函數str()函數將其他數據類型轉化為字符串>>> a = str(1.345)>>> a'1.345'# 查看類型>>> type(a)str2、直接加引號定義
  • Excel函數:LEN LENB快速區分字節和字符
    今天,小編告訴你,這樣的情況,再也不用我們一個一個去刪除了,只需要學會小編今天分享的這兩個函數我們就可以在短短幾分鐘內完美完成上司交代的任務,不信的話就一起來看看吧:1.LEN()函數函數功能:返回文本字符串中的字符數量提示:一個漢字、標點符號、一個英文字母都只是一個字符函數參數:=LEN(Text)如:=LEN(「
  • 2020廣東專插本計算機常用函數之日期、時間函數
    2020廣東專插本計算機常用函數之日期、時間函數 日期、時間函數
  • Python中的變量與字符串數據類型
    假如我們給a賦值為0a = 1,那麼1就是整數類型的值,a就是整數類型的變量;如果a = 'hello word',那麼'hello word'就是字符串類型的值,a就是字符串類型的變量。在Python中基本的變量類型包括以下五大類:1.字符串(string)2.數字(Numeric)· 整數(integer)· 浮點數(float)· 複數(complex