--=======================
常用字符串函數
--=======================
base64decode(string str) : base64 解碼.
base64encode(string str) : base64 編碼.
fnv_hash(type v) : 對參數值做hash, 注意結果有正有負
trim(string a): 去除 leading 和 trailing 的 space.
btrim(string a, string chars_to_trim): trim() 函數的加強版, 可以去除任何指定字符.
implala 的字符串長度是按照字節計算的, 下面三個函數是完全一樣的.
length('中國') : impala 返回值為 6.
char_length('中國') : impala 返回值為 6.
character_length('中國') : impala 返回值為 6.
Vertica 的字符串長度可以按照字節或字符計數的, 在 DDL 中是按照字節計算長度 (比如 char(10)), 在字符串函數中, 缺省是按照字符計數的.
length('中國') : vertica 返回值為 2.
select CHAR_LENGTH('中國' USING OCTETS) : vertica 返回值為 6.
select CHAR_LENGTH('中國' USING characters) : vertica 返回值為 2.
vertica 的 CHAR_LENGTH() 也可以寫成 CHARACTER_LENGTH().
concat(string a, string b...), 字符串拼接.
concat_ws(string sep, string a, string b...), 按照指定分隔符拼接字符串.
group_concat(string s, string sep), 按照指定分隔符, 將多行記錄的 s 表達式結果拼接起來.
find_in_set(string str, string strList), 在以逗號分隔的字符串列表 strList 中查找字符串, 結果為列表的下標, 下標起始為 1, 沒找到的話為 0, 如果兩個參數有一個為 null, 返回值為 null.
instr(string str, string substr [, bigint position [, bigint occurrence ] ])
locate(string substr, string str[, int pos])
locate() 和 instr() 作用相同,返回子串在長字符串的下標, 下標以 1 開始. 兩個函數的差異有:
它們的子串參數一個在前一個在后.
推薦是使用 instr(),因為它還可以支持匹配出現的次數, 並且可以用負數指定掃描的起始下標, 負數表示從長字符串結尾算.
substr(string a, int start [, int len]) ,提取子字符串
substring(string a, int start [, int len]) ,提取子字符串
replace(string initial, string target, string replacement), 替換字符串.
split_part(string source, string delimiter, bigint n) , split 字符串並獲取指定下標的子串.
repeat(string str, int n), 重復拼接 n 次字符串.
lower(string a) 和 lcase(string a), 都是將參數轉成小寫形式.
upper(string a) 和 ucase(string a), 都是將參數轉成大寫形式.
regexp_extract(string subject, string pattern, int index) , 正則提取.
regexp_like(string source, string pattern[, string options]) ,正則 like.
regexp_replace(string initial, string pattern, string replacement) ,正則替換.
parse_url(string urlString, string partToExtract [, string keyToExtract]) , 解析 url 中的指定的部位.