本文介紹Lindorm支援的字串函數的用法及樣本。
引擎與版本
字串函數適僅用於寬表引擎,且引擎版本需為2.5.1.1及以上版本。
函數列表
Lindorm支援的字串函數如下表所示:
函數 | 說明 |
將多個字串拼接成一個新的字串。 | |
計算字串的長度。 | |
將字串中所有的字母都轉換為小寫字母。 | |
計算指定字串的MD5值。 | |
計算指定字串的SHA256編碼值。 | |
將匹配指定規則的子串替換為新的字串。 | |
返回逆序的字串。 | |
從字串指定位置開始,將匹配指定規則的子串替換為新的字串。 | |
返回從字串指定位置開始,匹配指定規則的子串。 | |
返回字串中指定長度的子串。 | |
判斷字串的首碼是否為指定字串。 | |
刪除字串前後的空格。 | |
將字串中所有的字母都轉換為大寫字母。 |
CONCAT函數
將多個字串拼接成一個新的字串。
文法
CONCAT('string1','string2',...,'stringN')
參數說明
參數 | 是否必填 | 說明 |
'string1','string2',...,'stringN' | 是 | 需要拼接的字串,多個字串之間用英文逗號(,)分隔。 |
樣本
將單獨的字串a
、b
和c
進行拼接,組成一個新的字串abc
。
SELECT concat('a','b','c') AS val;
返回結果:
+--------+
| val |
+--------+
| abc |
+--------+
返回結果為拼接後的新字串,且字串中間無間隔符。
LENGTH函數
計算字串的長度。
文法
LENGTH('string')
參數說明
參數 | 是否必填 | 說明 |
string | 是 | 待匹配的字串。 |
樣本
計算字串abc
的長度。
SELECT length('abc') AS len;
返回結果:
+-----+
| len |
+-----+
| 3 |
+-----+
返回結果為3,表示字串abc
的長度為3。
LOWER函數
將字串中所有的字母都轉換為小寫字母。
文法
LOWER('string')
參數說明
參數 | 是否必填 | 說明 |
string | 是 | 待轉換的字串。 |
樣本
樣本1:將字串
ABC
中所有的字母都轉換為小寫字母。SELECT lower('ABC') AS val;
返回結果:
+--------+ | val | +--------+ | abc | +--------+
返回結果為abc,表示已將字串
ABC
中所有的大寫字母都轉換為小寫字母abc
。樣本2:將字串
Abc
中所有的字母都轉換為小寫字母。SELECT lower('Abc') AS val;
返回結果:
+--------+ | val | +--------+ | abc | +--------+
返回結果為abc,表示已將字串
Abc
中所有的大寫字母都轉換為小寫字母abc
。
MD5函數
計算指定字串的MD5值。
文法
MD5('string')
參數說明
參數 | 是否必填 | 說明 |
string | 是 | 待匹配的字串。 |
樣本
計算指定字串abc
的MD5值。
SELECT md5('abc') AS val;
返回結果:
+----------------------------------+
| val |
+----------------------------------+
| 900150983cd24fb0d6963f7d28e17f72 |
+----------------------------------+
返回結果為字串abc
的MD5值。
SHA256函數
計算指定字串的SHA256編碼值。
文法
SHA256('string')
參數說明
參數 | 是否必填 | 說明 |
string | 是 | 待編碼的字串。 |
樣本
假設表結構及表中資料如下:
-- 建立樣本表
CREATE TABLE tb (id int, name varchar, address varchar, PRIMARY KEY(id, name));
-- 寫入資料
UPSERT INTO tb (id, name, address) VALUES (1, 'jack', 'hz');
查詢id
值為1
的行中對應的name
列資料的SHA256編碼值。
SELECT sha256(name) AS sc FROM tb WHERE id=1;
返回結果:
+------------------------------------------------------------------+
| sc |
+------------------------------------------------------------------+
| 31611159e7e6ff7843ea4627745e89225fc866621cfcfdbd40871af4413747cc |
+------------------------------------------------------------------+
返回結果為字串jack
的SHA256編碼值。
REPLACE函數
將匹配指定規則的子串替換為新的字串。
文法
REPLACE('string','from_str','to_str')
參數說明
參數 | 是否必填 | 說明 |
string | 是 | 待匹配的字串。 |
from_str | 是 | 指定字串。 |
to_str | 是 | 替換的字串。 |
樣本,
樣本1:將字串
abc
中所有匹配bc
的子串都替換為cd
。SELECT replace('abc','bc','cd') AS val;
返回結果:
+-----+ | val | +-----+ | acd | +-----+
返回結果為acd,表示已將字串
abc
中匹配bc
的子串替換為cd
。樣本2:將字串
abcbc
中所有匹配bc
的子串都替換為cd
。SELECT replace('abcbc', 'bc', 'cd') AS val;
返回結果:
+-------+ | val | +-------+ | acdcd | +-------+
返回結果為acdcd,表示已將字串
abcbc
中匹配bc
的子串替換為cd
。
REVERSE函數
返回逆序的字串。
文法
REVERSE('string')
參數說明
參數 | 是否必填 | 說明 |
string | 是 | 待匹配的字串。 |
樣本
將字串abc
逆序輸出。
SELECT reverse('abc') AS val;
返回結果:
+-----+
| val |
+-----+
| cba |
+-----+
返回結果為cba ,表示已將字串abc逆序輸出。
REGEXP_REPLACE函數
從字串指定位置開始,將匹配指定規則的子串替換為新的字串。
文法
REGEXP_REPLACE('string',pat,rep,[pos])
參數說明
參數 | 是否必填 | 說明 |
string | 是 | 待匹配的字串。 |
pattern | 是 | Regex。 |
rep | 是 | 替換的字串。 |
position | 否 | 開始匹配字串的位置,取值為大於等於1的整數。不指定該參數時,預設從第1個字元開始匹配。 |
樣本
樣本1:不指定
pos
參數。預設從第1個字元開始匹配,並將匹配b
的子串替換為c
。SELECT regexp_replace('abc', 'b', 'c') AS val;
返回結果:
+-----+ | val | +-----+ | acc | +-----+
返回結果為acc,表示已將字串
abc
中匹配b
的子串替換為c
。樣本2:指定
pos
參數。從第2個字元開始匹配,並將匹配b
的子串替換為c
。SELECT regexp_replace('abcbc', 'b', 'c', 2) AS val;
返回結果:
+-------+ | val | +-------+ | acccc | +-------+
acccc,表示已將字串abcbc
中第2個字元至字串末尾匹配b
的子串替換為c
。
樣本3:指定
pos
參數。從第3個字元開始匹配,並將匹配b
的子串替換為c
。SELECT regexp_replace('abcbc', 'b', 'c', 3) AS val;
返回結果:
+-------+ | val | +-------+ | abccc | +-------+
返回結果為abccc,表示已將字串
abcbc
中第3個字元至字串末尾匹配b
的子串替換為c
。
REGEXP_SUBSTR函數
返回從字串指定位置開始,匹配指定規則的子串。
文法
REGEXP_SUBSTR('string', pat, [pos])
參數說明
參數 | 是否必填 | 說明 |
string | 是 | 待匹配的字串。 |
pattern | 是 | Regex。 |
position | 否 | 開始匹配字串的位置,取值為大於等於1的整數。不指定該參數時,預設從第1個字元開始匹配。 |
樣本
樣本1:指定
pos
參數,從字串abc
的第3個字元開始匹配b
的子串。SELECT regexp_substr('abc', 'b', 3) AS val;
返回結果:
+-----+ | val | +-----+ | | +-----+
返回結果為空,表示從字串第3個字元開始無匹配
b
的子串。樣本2:不指定
pos
參數,預設從字串abc
的第1個字元開始匹配b
的子串。SELECT regexp_substr('abc', 'b') AS val;
返回結果:
+-----+ | val | +-----+ | b | +-----+
返回結果為b,表示從字串第1個字元開始截取匹配
b
的子串。
SUBSTR函數
返回字串中指定長度的子串。
文法
SUBSTR( string, pos, [len])
參數說明
參數 | 是否必填 | 說明 |
string | 是 | 待匹配的字串。 |
position | 是 | 開始截取字串的位置,取值為大於等於1的整數。 |
len | 否 | 從左向右截取字串的長度,取值為大於等於1的整數。不指定該參數時,則預設返回 |
樣本
樣本1:不指定
len
參數,預設返回字串abc
第2個字元到字串末尾的子串。SELECT substr('abc', 2) AS val;
返回結果:
+-----+ | val | +-----+ | bc | +-----+
返回結果為bc,表示字串
abc
第2個字元至字串末尾的子串。樣本2:指定
len
參數,返回字串abc
第1個字元到第2個字元的子串。SELECT substr('abc', 1, 2) AS val;
返回結果:
+-----+ | val | +-----+ | ab | +-----+
返回結果為ab,表示字串
abc
第1個字元到第2個字元的子串。
START_WITH函數
判斷字串的首碼是否為指定字串。
文法
START_WITH('string1', 'string2')
參數說明
參數 | 是否必填 | 說明 |
string1 | 是 | 待匹配的字串。 |
string2 | 是 | 指定字串。 |
樣本
樣本1:判斷字串
abc
的首碼是否為指定字串ab
。SELECT start_with('abc', 'ab') AS val;
返回結果:
+--------+ | val | +--------+ | true | +--------+
返回結果為true,表示字串
abc
的首碼是指定字串ab
。樣本2:判斷字串
abc
的首碼是否為指定字串bc
。SELECT start_with('abc', 'bc') AS val;
返回結果:
+--------+ | val | +--------+ | false | +--------+
返回結果為false,表示字串
abc
的首碼不是指定字串bc
。
TRIM函數
刪除字串前後的空格。
文法
TRIM('string')
參數說明
參數 | 是否必填 | 說明 |
string | 是 | 待匹配的字串。 |
樣本
刪除指定字串 abc
前後的空格。
SELECT trim(' abc ') AS str;
返回結果:
+-----+
| str |
+-----+
| abc |
+-----+
返回結果為刪除前後空格後的結果。
UPPER函數
將字串中所有的字母都轉換為大寫字母。
文法
UPPER('string')
參數說明
參數 | 是否必填 | 說明 |
string | 是 | 待轉換的字串。 |
樣本
樣本1:將字串
abc
中所有的字母都轉換為大寫字母。SELECT upper('abc') AS val;
返回結果:
+--------+ | val | +--------+ | ABC | +--------+
返回結果為ABC,表示已將字串
abc
中所有的小寫字母轉換為大寫字母ABC
。樣本2:將字串
aBC
中所有的字母都轉換為大寫字母。SELECT upper('aBC') AS val;
返回結果:
+--------+ | val | +--------+ | ABC | +--------+
返回結果為ABC,表示已將字串
aBC
中所有的小寫字母都轉換為大寫字母ABC
。