本文為您介紹資料分析支援的字串函數的命令格式、參數說明及樣本。
函數 | 功能 |
CHR | 將指定ASCII碼轉換成字元。 |
CONCAT | 將參數中的所有字串串連在一起。 |
GET_JSON_OBJECT | 擷取JSON字串中的指定字串。 |
INSTR | 計運算元字串在整個字串中的位置。 |
BASE64_DECODE | 對Base64加密資料,進行Base64解碼。 |
LENGTH | 返回字串的長度。 |
LENGTHB | 返回字串以位元組為單位的長度。 |
MD5 | 計算字串的MD5值。 |
REGEXP_REPLACE | 將字串中指定位置的子字串替換成新字串後返回。 |
SPLIT_PART | 依照分隔字元拆分字串,返回指定閉區間的子串。 |
SUBSTR | 返回字串從指定位置開始指定長度的子串。 |
TOLOWER | 返回英文字串對應的小寫字串。 |
TOUPPER | 返回英文字串對應的大寫字串。 |
TO_CHAR | 將BOOLEAN、BIGINT、DECIMAL或DOUBLE類型轉為對應的STRING類型表示。 |
TRIM | 去除字串的左右空格。 |
LTRIM | 去除字串的左空格。 |
RTRIM | 去除字串的有空格。 |
REVERSE | 返回倒序字串。 |
ASCII | 返回字串第一個字元的ASCII碼。 |
LPAD | 用b字串將a字串向左補足到len位。 |
RPAD | 用b字串將a字串向右補足到len位。 |
REPLACE | 將字串中指定字串替換為新字串後返回。 |
URL_ENCODE | 將輸入字串編碼為application/x-www-form-urlencoded MIME格式。 |
URL_DECODE | 將輸入字串從application/x-www-form-urlencoded MIME格式轉為正常字串,是URL_ENCODE的逆過程。 |
ENDSWITH | 判斷字串1的值是否以字串2結尾。 |
TO_BASE64 | 將位元據轉換成對應base64編碼的字串輸出。 |
CHR
- 命令格式
STRING CHR(BIGINT ascii)
- 命令說明
將指定ASCII碼ascii轉換成字元。
- 參數說明
ascii:BIGINT類型的ASCII值。參數範圍是0~255,超過此範圍會引發異常。如果輸入為STRING、DOUBLE或DECIMAL類型,則會隱式轉換為BIGINT類型後參與運算,其它類型會返回異常。
- 傳回值說明
返回STRING類型。如果輸入參數為NULL,則返回NULL。
CONCAT
- 命令格式
STRING CONCAT(STRING a, STRING b...)
- 命令說明
將參數中的所有字串串連在一起。
- 參數說明
輸入參數為STRING類型。如果輸入參數為BIGINT、DOUBLE、DECIMAL或DATETIME類型,則會隱式轉換為STRING類型後參與運算,其它類型會返回異常。
- 傳回值類型
返回STRING類型。如果沒有參數或者任一參數為NULL,則返回NULL。
- 樣本
CONCAT('ab','c') = 'abc' CONCAT() = NULL CONCAT('a', null, 'b') = NULL
GET_JSON_OBJECT
- 命令格式
STRING GET_JSON_OBJECT(STRING json,STRING path)
- 命令說明
用於在一個標準JSON字串中,按照
path
抽取指定的字串。每次調用該函數時,都會讀一次未經處理資料,因此反覆調用可能浪費效能和費用。您可以通過GET_JSON_OBJECT
,結合UDTF,輕鬆轉換JSON格式日誌資料,避免多次調用函數。 - 參數說明
JSON
:STRING類型,標準的JSON
格式字串。path
:STRING類型,表示在JSON
中的path
,以$
開頭。path
詳情請參見LanguageManual UDF。$
:表示根節點。.
:表示子節點。[]
:[number]
表示數組下標,數組格式為key[sub1][sub2][sub3]……
。*
:Wildcard for []
,返回整個數組。*
不支援轉義。
- 傳回值說明
- 如果
JSON
為空白或非法的JSON
格式,則返回NULL。 - 如果
JSON
合法,path
也存在,則返回對應字串。 - 不支援一個Object中出現相同的Key,例如
{a:1, a:0}
,可能導致無法解析。 - 不支援Emoji表情字串。
- 如果
- 樣本
- 樣本1:
--json內容。 {"store": {"fruit":[{"weight":8,"type":"apple"},{"weight":9,"type":"pear"}], "bicycle":{"price":19.95,"color":"red"} }, "email":"amy@only_for_json_udf_test.net", "owner":"amy" }
執行如下命令提取JSON
對象中的資訊。--返回amy。 GET_JSON_OBJECT(json, '$.owner'); --返回{"weight":8,"type":"apple"}。 GET_JSON_OBJECT(json, '$.store.fruit\[0]'); --返回NULL。 GET_JSON_OBJECT(json, '$.non_exist_key');
- 樣本2:
GET_JSON_OBJECT('{"array":[["aaaa",1111],["bbbb",2222],["cccc",3333]]}','$.array[1][1]')= "2222" GET_JSON_OBJECT('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[*]') = "["h0","h1","h2"]" GET_JSON_OBJECT('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[1]') = "h1"
- 樣本1:
INSTR
- 命令格式
BIGINT INSTR(STRING str1, STRING str2[, BIGINT start_position[, BIGINT nth_appearance]])
- 命令說明
用於計運算元串
str2
在字串str1
中的位置。 - 參數說明
str1
:STRING類型,要搜尋的字串。如果輸入為BIGINT、DOUBLE、DECIMAL或DATETIME類型,則會隱式轉換為STRING類型後參與運算,其它類型會返回異常。str2
:STRING類型,要搜尋的子串。如果輸入為BIGINT、DOUBLE、DECIMAL或DATETIME類型,則會隱式轉換為STRING類型後參與運算,其它類型會返回異常。start_position
:BIGINT類型,其它類型會返回異常。表示從str1
的第幾個字元開始搜尋,預設起始位置是第一個字元位置1。nth_appearance
:BIGINT類型,大於0。表示子串在字串中的第nth_appearance
次匹配的位置。如果nth_appearance
為其它類型或小於等於0,則返回異常。
- 傳回值說明
- 返回BIGINT類型。
- 如果在
str1
中未找到str2
,則返回0。 - 如果任一輸入參數為NULL,則返回NULL。
- 如果
str2
為空白串,則總能匹配成功,例如instr(‘abc’, ‘’)
會返回1。
- 樣本
INSTR('Tech on the net', 'e') = 2 INSTR('Tech on the net', 'e', 1, 1) = 2 INSTR('Tech on the net', 'e', 1, 2) = 11 INSTR('Tech on the net', 'e', 1, 3) = 14
BASE64_DECODE
- 命令格式
base64_decode(STRING str)
- 命令說明
當字串為Base64加密資料時,可使用該函數進行Base64解碼處理
- 參數說明
str:STRING類型的字串。如果輸入為BIGINT、DOUBLE、DECIMAL、TIMESTAMP或DATE類型,則會隱式轉換為STRING類型後參與運算。如果輸入為非Base64加密的字串,則返回原字串。
- 傳回值說明
返回STRING類型。
LENGTH
- 命令格式
BIGINT LENGTH(STRING str)
- 命令說明
返回字串
str
的長度。 - 參數說明
str
:STRING類型。如果輸入為BIGINT、DOUBLE、DECIMAL或DATETIME類型,則會隱式轉換為STRING類型後參與運算,其它類型會返回異常。- 返回BIGINT類型。如果輸入參數為NULL,則返回NULL;如果輸入參數為非UTF-8編碼格式,則返回-1。
- 樣本
LENGTH('hi! 中國') = 6
LENGTHB
- 命令格式
BIGINT LENGTHB(STRING str)
- 命令說明
返回字串
str
的以位元組為單位的長度。 - 參數說明
str
:STRING類型。如果輸入為BIGINT、DOUBLE、DECIMAL或DATETIME類型,則會隱式轉換為STRING類型後參與運算,其它類型會返回異常。- 返回BIGINT類型。如果輸入參數為NULL,則返回NULL。
- 樣本
LENGTHB('hi! 中國') = 10
MD5
- 命令格式
STRING MD5(STRING value)
- 命令說明
計算輸入字串
value
的MD5值。 - 參數說明
value
:STRING類型。如果輸入為BIGINT、DOUBLE、DECIMAL或DATETIME類型,則會隱式轉換為STRING類型參與運算,其它類型會返回異常。 - 傳回值說明
返回STRING類型。如果輸入參數為NULL,則返回NULL。
REGEXP_REPLACE
- 命令格式
STRING REGEXP_REPLACE(STRING source, STRING pattern, STRING replace_string[, BIGINT occurrence])
- 命令說明
將
source
字串中,第occurrence
次匹配pattern
的子串,替換成指定字串replace_STRING
後,返回結果字串。 - 參數說明
source
:STRING類型,要替換的字串。pattern
:STRING類型常量,要匹配的模式,pattern
為空白串時返回異常。replace_string
:STRING類型,將匹配的pattern
替換成的字串。occurrence
:BIGINT類型常量,必須大於等於0,表示將第幾次匹配替換成replace_string
,為0時表示替換掉所有的匹配子串。為其它類型或小於0時,返回異常。可預設,預設值為0。
- 傳回值說明
- 返回STRING類型。當引用不存在的組時,不進行替換。
- 如果任一輸入參數為NULL,則返回NULL。
- 如果
replace_string
為NULL且pattern
有匹配,則返回NULL。 - 如果
replace_string
為NULL但pattern
不匹配,則返回原字串。
- 樣本
regexp_replace("123.456.7890", "([[:digit:]]{3})\\.([[:digit:]]{3})\\.([[:digit:]]{4})", "(\\1)\\2-\\3", 0) = "(123)456-7890" regexp_replace("abcd", "(.)", "\\1 ", 0) = "a b c d " regexp_replace("abcd", "(.)", "\\1 ", 1) = "a bcd" regexp_replace("abcd", "(.)", "\\2", 1) = "abcd" -- 因為pattern中只定義了一個組,引用的第二個組不存在。 -- 請避免這樣使用,引用不存在的組的結果未定義。 regexp_replace("abcd", "(.*)(.)$", "\\2", 0) = "d" regexp_replace("abcd", "a", "\\1", 0) = "bcd" -- 因為在pattern中沒有組的定義,所以\1引用了不存在的組。 -- 請避免這樣使用,引用不存在的組的結果未定義。
SPLIT_PART
- 命令格式
STRING SPLIT_PART(STRING str, STRING separator, BIGINT start[, BIGINT end])
- 命令說明
依照分隔字元
separator
拆分字串str
,返回從第start
部分到第end
部分的子串(閉區間)。 - 參數說明
str
:STRING類型,要拆分的字串。如果是BIGINT、DOUBLE、DECIMAL或DATETIME類型,則會隱式轉換為STRING類型後參與運算,其它類型會返回異常。separator
:STRING類型常量,拆分用的分隔字元,可以是一個字元,也可以是一個字串,其它類型返回異常。start
:BIGINT類型常量,必須大於0。非常量或其它類型會返回異常。返回段的開始編號(從1開始),如果沒有指定end
,則返回start
指定的段。end
:BIGINT類型常量,大於等於start
,否則返回異常。返回段的截止編號,非常量或其它類型會返回異常。此參數可省略,預設時表示最後一部分。
- 傳回值說明
- 返回STRING類型。
- 如果
start
的值大於切分後實際的分段數,例如字串拆分完有6個片段,start
大於6,返回空串。 - 如果
separator
不存在於str
中,且start
指定為1,返回整個str
。如果str
為空白串,則輸出空串。 - 如果
separator
為空白串,則返回原字串str
。 - 如果
end
大於片段個數,按片段個數處理。 - 如果任一輸入參數為NULL,則返回NULL。
- 樣本
SPLIT_PART('a,b,c,d', ',', 1) = 'a' SPLIT_PART('a,b,c,d', ',', 1, 2) = 'a,b' SPLIT_PART('a,b,c,d', ',', 10) = ''
SUBSTR
- 命令格式
STRING SUBSTR(STRING str, BIGINT start_position[, BIGINT length])
- 命令說明
返回字串
str
從start_position
開始,長度為length
的子串。 - 參數說明
str
:STRING類型,如果輸入為BIGINT、DECIMAL、DOUBLE或DATETIME類型,則會隱式轉換為STRING類型後參與運算,其它類型會返回異常。start_position
:BIGINT類型,起始位置為1。當start_position
為0時,返回空串。當start_position
為負數時,表示開始位置是從字串的結尾往前倒數,最後一個字元是-1,往前數依次為-2、-3…,其它類型會返回異常。length
:BIGINT類型,表示子串的長度值。值大於0,其它類型或值小於等於0返回異常。
- 傳回值說明
返回STRING類型。如果任一輸入參數為NULL,則返回NULL。
說明 當length
被省略時,返回到str
結尾的子串。 - 樣本
SUBSTR("abc", 2) = "bc" SUBSTR("abc", 2, 1) = "b" SUBSTR("abc",-2,2) = "bc" SUBSTR("abc",-3) = "abc"
TOLOWER
- 命令格式
STRING TOLOWER(STRING source)
- 命令說明
輸出英文字串
source
對應的小寫字串。 - 參數說明
source
:STRING類型。如果輸入為BIGINT、DOUBLE、DECIMAL或DATETIME類型,則會隱式轉換為STRING類型後參與運算,其它類型會返回異常。 - 傳回值說明
返回STRING類型。如果輸入參數為NULL,則返回NULL。
- 樣本
tolower("aBcd") = "abcd" tolower("哈哈Cd") = "哈哈cd"
TOUPPER
- 命令格式
STRING TOUPPER(STRING source)
- 命令說明
輸出英文字元
source
串對應的大寫字串。 - 參數說明
source
:STRING類型。如果輸入為BIGINT、DOUBLE、DECIMAL或DATETIME類型,則會隱式轉換為STRING類型後參與運算,其它類型會返回異常。 - 傳回值說明
返回STRING類型。如果輸入參數為NULL,則返回NULL。
- 樣本
toupper("aBcd") = "ABCD" toupper("哈哈Cd") = "哈哈CD"
TO_CHAR
- 命令格式
STRING TO_CHAR(BOOLEAN value) STRING TO_CHAR(BIGINT value) STRING TO_CHAR(DOUBLE value) STRING TO_CHAR(DECIMAL value)
- 命令說明
將BOOLEAN、BIGINT、DECIMAL或DOUBLE類型轉為對應的STRING類型表示。
- 參數說明
value
:BOOLEAN、BIGINT、DECIMAL型或DOUBLE類型,其它類型會返回異常。 - 傳回值說明
返回STRING類型。如果輸入參數為NULL,則返回NULL。
- 樣本
TO_CHAR(123) = '123' TO_CHAR(true) = 'TRUE' TO_CHAR(1.23) = '1.23' TO_CHAR(null) = NULL
TRIM
- 命令格式
STRING TRIM(STRING str)
- 命令說明
去除字串
str
的左右空格。 - 參數說明
str
:STRING類型。如果輸入為BIGINT、DECIMAL、DOUBLE或DATETIME類型,則會隱式轉換為STRING類型後參與運算,其它類型返回異常。 - 傳回值說明
返回STRING類型。如果輸入參數為NULL,則返回NULL。
- 樣本
LTRIM(' abc ')="abc";
LTRIM
- 命令格式
STRING LTRIM(STRING str)
- 命令說明
去除字串
str
的左邊空格。 - 參數說明
str
:STRING類型。如果輸入為BIGINT、DECIMAL、DOUBLE或DATETIME類型,則會隱式轉換為STRING類型後參與運算,其它類型會返回異常。 - 傳回值說明
返回為STRING類型。如果輸入參數為NULL,則返回NULL。
- 樣本
LTRIM(' abc ')="abc ";
RTRIM
- 命令格式
STRING RTRIM(STRING str)
- 命令說明
去除字串
str
的右邊空格。 - 參數說明
str
:STRING類型。如果輸入為BIGINT、DECIMAL、DOUBLE或DATETIME類型,則會隱式轉換為STRING類型後參與運算,其它類型會返回異常。 - 傳回值說明
返回STRING類型。如果輸入參數為NULL,則返回NULL。
- 樣本
RTRIM('a abc ')="a abc";
REVERSE
- 命令格式
STRING REVERSE(STRING str)
- 命令說明
返回倒序字串。
- 參數說明
str
:STRING類型。如果輸入為BIGINT、DOUBLE、DECIMAL或DATETIME類型,則會隱式轉換為STRING類型後參與運算,其它類型會返回異常。 - 傳回值說明
返回STRING類型。如果輸入參數為NULL,則返回NULL。
- 樣本
REVERSE('abcedfg')="gfdecba"
ASCII
- 命令格式
BIGINT ASCII(STRING str)
- 命令說明
返回字串
str
第一個字元的ASCII碼。 - 參數說明
str
:STRING類型。如果輸入為BIGINT、DOUBLE、DECIMAL或DATETIME類型,則會隱式轉換為STRING類型後參與運算,其它類型會返回異常。 - 傳回值說明
返回BIGINT類型。
- 樣本
--返回97。 ASCII('abcde')
LPAD
- 命令格式
STRING LPAD(STRING a, INT len, STRING b)
- 命令說明
用
b
字串將a
字串向左補足到len
位。 - 參數說明
len
:INT整型。a
、b
:STRING類型。
- 傳回值說明
返回STRING類型。如果
len
小於a
的位元,則返回a
從左開始截取len
位字元。如果len
為0,則返回空。 - 樣本
lpad('abcdefgh',10,'12')='12abcdefgh' lpad('abcdefgh',5,'12')='abcde' lpad('abcdefgh',0,'12') --返回空
RPAD
- 命令格式
STRING RPAD(STRING a, INT len, STRING b)
- 命令說明
用
b
字串將a
字串向右補足到len
位。 - 參數說明
len
:INT整型。a
、b
:STRING類型。
- 傳回值說明
返回STRING類型。如果
len
小於a
的位元,則返回a
從左開始截取len
位字元;如果len
為0,則返回空。 - 樣本
rpad('abcdefgh',10,'12')='abcdefgh12' rpad('abcdefgh',5,'12')='abcde' rpad('abcdefgh',0,'12') -- 返回空。
REPLACE
- 命令格式
STRING REPLACE(STRING a, STRING OLD, STRING NEW)
- 命令說明
用
NEW
字串替換a
字串中與OLD
字串完全重合的部分並返回a
。 - 參數說明
參數均為STRING類型。
- 傳回值說明
返回STRING類型。如果任一輸入參數為NULL,則返回NULL。
- 樣本
REPLACE('ababab','abab','12')='12ab' REPLACE('ababab','cdf','123')='ababab' REPLACE('123abab456ab',null,'abab')=null
URL_ENCODE
- 命令格式
STRING URL_ENCODE(STRING input[, STRING encoding])
- 命令說明將輸入字串編碼為
application/x-www-form-urlencoded MIME
格式。- a~z、A~Z保持不變。
- 英文句點(.)、短劃線(-)、星號(*)和底線(_)保持不變。
- 空格轉為加號(+)。
- 其餘字元根據指定的
encoding
轉為位元組值,然後將每個位元組值表示為%xy
的格式,xy
是該字元的十六進位表示方式。
- 參數說明
input
:要輸入的字串。encoding
:指定的編碼格式,支援GBK或UTF-8等標準編碼格式,不輸入預設為UTF-8。
- 傳回值說明
返回STRING類型。如果輸入參數為NULL,則返回NULL。
- 樣本
URL_ENCODE('樣本for URL_ENCODE:// (fdsf)') = "%E7%A4%BA%E4%BE%8Bfor+URL_ENCODE%3A%2F%2F+%28fdsf%29" URL_ENCODE('Example for URL_ENCODE:// dsf(fasfs)', 'GBK') = "Example+for+URL_ENCODE+%3A%2F%2F+dsf%28fasfs%29"
URL_DECODE
- 命令格式
STRING URL_DECODE(STRING input[, STRING encoding])
- 命令說明將輸入字串從
application/x-www-form-urlencoded MIME
格式轉為正常字串,是URL_ENCODE
的逆過程。- a~z、A~Z保持不變。
- 英文句點(.)、短劃線(-)、星號(*)和底線(_)保持不變。
- 加號(+)轉為空白格。
%xy
格式的序列轉為對應的位元組值,連續的位元組值根據輸入的encoding
名稱解碼為對應的字串。- 其餘的字元保持不變。
- 函數最終的傳回值是UTF-8編碼的字串。
- 參數說明
input
:要輸入的字串。encoding
:指定的編碼格式,支援GBK或UTF-8等標準編碼格式,不輸入預設為UTF-8。
- 傳回值說明
返回STRING類型。如果輸入參數為NULL,則返回NULL。
- 樣本
URL_DECODE('%E7%A4%BA%E4%BE%8Bfor+URL_DECODE%3A%2F%2F+%28fdsf%29')= "樣本for URL_DECODE:// (fdsf)" URL_DECODE('Example+for+URL_DECODE+%3A%2F%2F+dsf%28fasfs%29', 'GBK') = "Example for URL_DECODE:// dsf(fasfs)"
ENDSWITH
- 命令格式
BOOLEAN ENDSWITH(STRING input, STRING suffix)
- 命令說明
判斷input的值是否以suffix結尾。
- 參數說明
輸入參數為STRING類型。如果輸入參數為BIGINT、DOUBLE、DECIMAL或DATETIME類型,則會隱式轉換為STRING類型後參與運算,其它類型會返回異常。
- 傳回值說明
返回BOOLEAN類型。
TO_BASE64
- 命令
TO_BASE64(BINARY bin)
- 命令說明
將位元據轉換成對應base64編碼的字串輸出。
- 參數說明
輸入參數為BINARY類型。
- 傳回值說明
返回base64編碼的字串。