字符串函數分爲四類。
基礎,查詢(位置,子字符串,長度),新增,修改。
格式,填充,trim,大小寫。
轉換,進制類,字符集類,其他數據類型。
工具,生成,加密 & 解密,轉義,其他。
1、基礎
1.1 查詢
1.1.1 位置
分爲兩類,在單個字符串中尋找某個字符串的位置。在字符串集合中搜索某個字符串的位置。
1.1.1.1 position(單個)
格式: position(search_str in str)
說明:搜索search_str在str中的位置。不存在時返回0,若search_str或str爲null時返回null。
參數:
search_str:關鍵詞。
str: 被搜索的字符串
示例:
position('a' in 'abc') // 返回1
注意:起始位置爲1,不是0. 當多次出現時,只返回第一次出現的位置
類似的函數:instr(str, search_str)
1.1.1.2 locate(單個)
比position多一個參數,該參數指定搜索的起始位置。
locate(‘a’, ‘abca’, 1); // 返回1,和position完全相同
locate(‘a’, ‘abca’, 2); // 返回4。
1.1.1.3 field & find_in_set(多個)
格式:field(target, str1, str2,strN) find_in_set(target,strList)
說明:在str集合中查詢target的位置。
參數:
str1, str2, strN:提供N個字符串,組成一個集合
strList:由1到N個字符串拼接而成,用逗號分隔。
示例:
field(‘a’,’a’,’b’,’c’) // 返回1
find_in_set(‘a’,’a,b,c’) // 與上面功能相同
1.1.2 長度
1.1.2.1 length
length(‘ab’); // 返回2,計算字符串的長度。
1.1.3 子串
1.1.3.1 substring & substr & mid
格式:substring(str, start, length)
描述:截取子字符串。
參數:
start:起始位置,負數時,從右往左。
length:截取的長度,若未指定,默認到末尾。
示例:
substring(‘abc’,1); // 返回bc
substring(‘abc’,-1); // 返回c
類似的函數:mid(str, start, len)
1.1.3.2 left & right
left(str, length) // 返回str的前length個字符,當length爲負數時,從末尾開始。
right(str,length) // 從右到左。
1.2 新增
1.2.1 concat & concat_ws
格式:concat(str1, str2...) 或 concat_ws(separator, str1, str2...)
描述:在上一個字符串的末尾添加下一個字符串。
參數:
Str: 1到N個子字符串。
separator: 分隔符,若未指定,默認爲逗號
示例:
select concat(‘hello’, ‘ ’, ‘world’) // 返回hello world
select ‘hello’ || ‘ ’ || world // 相同的效果
1.3 修改
1.3.1 insert
格式:insert(str, start, length, substr)
說明:在str的開始位置,結束位置之間,使用substr替換。
1.3.2 replace
格式:replace(str, old_str, new_str)
描述:替換字符串。
參數:
old_str:被替換的字符串。若不存在,則什麼都不做。
new_str: 用來替換的新字符串
示例:
select replace('aba', 'a', 'd'); // 返回dbd
注意:不是光替換第一次,而是替換所有的字符串
2、格式
2.1 去除
2.1.1 trim & ltrim & rtrim
格式:trim( [ [{LEADING | TRAILING | BOTH}] [removal_char] FROM ] target_string)
描述:在開頭,末尾刪除字符串中的所有特定字符。當未指定特定字符時,默認爲空格。
參數:
{LEADING | TRAILING | BOTH}:指定刪除位置,LEADING開頭,TRAILING末尾,BOTH包含開頭和末尾。默認值爲both
removal_char: 特定字符,默認情況下爲空格。
from target_string: 指定字符串。
示例:
trim(‘xxxWHISKEYxxx’); // 返回源字符串,位置參數爲both,特定字符爲空字符串。
trim(' WHISKEY '); // 返回WHISKEY,位置參數爲BOTH,特定字符串爲空字符串。
trim(LEADING from ' WHISKEY '); // 等價於ltrim
trim(TRAILING from ' WHISKEY '); // 等價於rtrim。
trim(BOTH 'x' FROM 'xxxWHISKEYxxx'); // 返回WHISKEY,位置參數BOTH有沒有都是一樣的。
類似的函數:
ltrim(str);// 相當於位置參數爲LEADING, 特殊字符爲空格
rtrim(str);// 相當於位置參數爲TRAILING, 特殊字符爲空格
2.2 填充
2.2.1 lpad
格式:lpad(str, len, padStr)
描述:在str的開頭用padStr填充,直到str字符串的長度爲len。
參數:
len:填充完成之後的字符串長度,若小於原始長度,相當於截取。
padStr:填充的字符串
示例:
select lpad('ab', 5, 'b'); // 返回bbbab
select lpad('ab', 1, 'b'); // 返回a
類似的函數:
select rpad('ab', 5, 'b'); // 返回abbbb
2.3 大小寫
2.3.1 lower & upper
返回字符串的大小寫,不改變源字符串。
select lower(‘AbC’); // 返回abc
select upper(‘aBc’); // 返回ABC
3、轉換
3.1 字符集
3.1.1 ascii & char
ascii(‘A’); // 返回65, 字母的ASCII碼
char(num); // 字符集數字對應的字符,參數爲65時返回A
3.2 進制
bin(str) // 將字符串轉換爲二進制
oct(str) // 將字符串轉換爲八進制
hex(str) // 將字符串轉換爲十六進制
unhex(str) // 將十六進制轉換爲對應的字符串。
4、工具
4.1 生成
4.1.1 repeat
select repeat(‘a’,3); // 返回aaa,str重複n次。
4.1.2 reverse
select reverse(‘ab’); //返回ba,原字符串倒序。
4.1.3 space
select space(n); // 返回n個空格
4.1.4 UUID
select UUID(); // 返回唯一ID
4.2 加密
4.2.1 to_base64
select to_base64(str); // 返回用base64加密的字符串。
4.3 轉義
4.3.1 quote
quote("a'b'c") // 返回'a\'b\'c', 將str中的特殊字符進行轉義。
4.4 其他
4.4.1 strcmp
格式: strcmp(str1, str2)
說明:str1和str2做比較,大於返回1,小於返回-1,等於返回0
示例:
select strcmp(‘a’,’b’); // 返回-1