字串函數用於字串處理,例如轉換大小寫、去除空格、提取子串等。本文介紹AnalyticDB for MySQL字串函數的用法與樣本。
ASCII:返回字元或者字串最左邊字元對應的ASCII值。
BIN:返回整數的二進位字串。
BIT_LENGTH:以位為單位返回字串的長度。
CHAR:返回整數對應的ASCII碼組成的字串。
CHAR_LENGTH或CHARACTER_LENGTH:以字元為單位返回字串的長度。
CONCAT:連接字串。
CONCAT_WS:連接字串,字串中間以分隔串間隔。
ELT:返回整數N指定的字串。
ENCRYPT:對字串進行加密。
EXPORT_SET:根據整數中的位元值,返回組合後的字串。
FIELD:返回指定字串在字串列表中的索引位置。
FIND_IN_SET:返回字元或字串在另一個字串中的位置。
FORMAT:將數字N格式化,返回字串。
FROM_BASE64:解碼Base64編碼的字串並返回結果。
FROM_UTF8:解碼UTF-8編碼的字串並返回結果。
HEX:將一個整數或字串轉換為其所對應的十六進位格式的字串。
INSTR:返回字串中子字串首次出現的位置。
LEFT:從字串最左邊開始,返回N個字元。
LENGTH或OCTET_LENGTH:字串長度。
LIKE:簡單的模式比對。
LOCATE:返回字串首次出現在另一個字串中的位置資訊。
LOWER或LCASE:將字串轉換為小寫。
LPAD:左拼接字串。
LTRIM:刪除字串的前置空格。
MAKE_SET:返回一組以逗號分隔的字串。
MD5_MUR:將字串轉換為數值。
MID:從字串的指定位置開始,返回指定長度的子字串。作用同SUBSTR或SUBSTRING。
OCT:返回指定整數的八進位字串表示形式。
ORD:如果字串最左邊的字元是多位元組字元,則返回該字元的代碼。
POSITION:返回字串中子字串首次出現的位置。
REPEAT:返回字串重複多次後的字串。
REPLACE:用指定字串替換另一個字串中的部分字元。
REVERSE:將字串逆序。
RIGHT:返回字串最右邊的指定數量的字元。
RLIKE或REGEXP:將字串expression與pattern進行正則匹配,匹配成功返回1,否則返回0。
RPAD:右拼接字串。
RTRIM:刪除字串的後置空格。
SPACE:返回由指定數量空格組成的字串。
SPLIT:將字串按分隔字元進行分隔,並返回數組。
SPLIT_PART:將字串按分隔字元分隔,並返回分隔後指定數組下標的子串。
SPLIT_TO_MAP:通過
entryDelimiter和keyValueDelimiter拆分字串,並返回map。STRCMP:根據兩個字串的大小,返回0、1或者-1。
SUBSTR或SUBSTRING:返回從指定位置開始的指定長度的子字串。
SUBSTRING_INDEX:返回字串中第count個分隔字元之前或之後的子字串。
TO_BASE64:返回字串的Base64編碼形式。
TO_UTF8:返回字串的UTF-8編碼形式。
TRIM:刪除字串前後所有的空格。
UPPER或UCASE:將字串轉換為大寫。
UNHEX:將十六進位數字轉換為字元。
ASCII
ascii(str)命令說明:返回字元
str或者字串str最左邊字元對應的十進位ASCII值。輸入實值型別:VARCHAR。
傳回值類型:BIGINT。
樣本:
語句如下:
SELECT ascii('2');返回結果如下:
+------------+ | ascii('2') | +------------+ | 50 | +------------+語句如下:
SELECT ascii('dx');返回結果如下:
+-------------+ | ascii('dx') | +-------------+ | 100 | +-------------+
BIN
bin(N)命令說明:返回
N的二進位字串。如果
N為null,則返回結果為NULL。輸入實值型別:BIGINT。
傳回值類型:VARCHAR。
樣本:
SELECT bin(12);返回結果如下:
+---------+ | bin(12) | +---------+ | 1100 | +---------+
BIT_LENGTH
bit_length(str)命令說明:以位為單位返回字串
str的長度。輸入實值型別:VARCHAR。
傳回值類型:BIGINT。
樣本:
語句如下:
SELECT bit_length('text');返回結果如下:
+--------------------+ | bit_length('text') | +--------------------+ | 32 | +--------------------+語句如下:
SELECT bit_length('China');返回結果如下:
+---------------------+ | bit_length('China') | +---------------------+ | 40 | +---------------------+
CHAR
char(N1, N2, ...)命令說明: 返回
N1、N2等整數對應的十進位ASCII碼組成的字串。輸入實值型別:BIGINT。
傳回值類型:VARBINARY。
樣本:
SELECT char(97,110,97,108,121,116,105,99,100,98);返回結果如下:
+-------------------------------------------+ | char(97,110,97,108,121,116,105,99,100,98) | +-------------------------------------------+ | analyticdb | +-------------------------------------------+
CHAR_LENGTH或CHARACTER_LENGTH
char_length(str)
character_length(str)命令說明: 以字元為單位返回字串
str的長度。一個漢字所對應的字元長度是
1。輸入實值型別:VARCHAR。
傳回值類型:BIGINT。
樣本:
語句如下:
SELECT char_length('China');返回結果如下:
+----------------------+ | char_length('China') | +----------------------+ | 5 | +----------------------+語句如下:
SELECT char_length('abc');返回結果如下:
+--------------------+ | char_length('abc') | +--------------------+ | 3 | +--------------------+
CONCAT
concat(str 1, …, str n)命令說明:字串串連操作,其中任何一個參數為
null,則傳回值為null。輸入實值型別:VARCHAR。
傳回值類型:VARCHAR。
樣本:
語句如下:
SELECT concat('aliyun', ', ', 'analyticdb');返回結果如下:
+--------------------------------------+ | concat('aliyun', ', ', 'analyticdb') | +--------------------------------------+ | aliyun, analyticdb | +--------------------------------------+語句如下:
SELECT concat('abc',null,'def');返回結果如下:
+--------------------------+ | concat('abc',null,'def') | +--------------------------+ | NULL | +--------------------------+
CONCAT_WS
concat_ws(separator, str 1, …, str n)命令說明:字串串連操作,第一個參數
separator是其餘參數的分隔字元,串連時會跳過任何為null值的字串。輸入實值型別:VARCHAR。
傳回值類型:VARCHAR。
樣本:
語句如下:
SELECT concat_ws(',', 'First name', 'Second name', 'Last Name')AS result;返回結果如下:
+----------------------------------+ | result | +----------------------------------+ | First name,Second name,Last Name | +----------------------------------+語句如下:
SELECT concat_ws(',','First name',NULL,'Last Name')AS result;返回結果如下:
+----------------------+ | result | +----------------------+ | First name,Last Name | +----------------------+
ELT
elt(N, str 1, ...,str n);命令說明:返回第
N個字串。若
N<1或大於後面字串參數的數量,則返回結果為null。輸入實值型別:
N為BIGINT類型,str為VARCHAR類型。傳回值類型:VARCHAR。
樣本:
SELECT elt(4, 'Aa', 'Bb', 'Cc', 'Dd');返回結果如下:
+--------------------------------+ | elt(4, 'Aa', 'Bb', 'Cc', 'Dd') | +--------------------------------+ | Dd | +--------------------------------+
ENCRYPT
encrypt(x, y);命令說明:對參數
x進行加密,y為Salt值。輸入實值型別:
x為VARBINARY類型,y為VARCHAR類型。傳回值類型:VARBINARY
樣本:
SELECT encrypt('abdABC123','key');返回結果如下:
+--------------------------------------------------------+ | encrypt('abdABC123','key') | +--------------------------------------------------------+ | 0x6B657A617A6D63496F2E614377 | +--------------------------------------------------------+
EXPORT_SET
export_set(bits, onstr, offstr [, separator[,number_of_bits]]);命令說明:將
bits轉換為二進位值。其中:系統會從右至左檢查二進位值,如果二進位值為1,則會被替換為
onstr值;如果二進位值為0,則會被替換為offstr值。傳回值之間由
separator分隔。number_of_bits指定了檢查位元,預設值為64。如果指定number_of_bits大於64,則會被裁剪到64位;如果指定number_of_bits為-1,則檢查位元仍預設為64。
輸入實值型別:
bits和number_of_bits均為BIGINT類型,onstr、offstr和separator均為VARCHAR類型。傳回值類型:VARCHAR。
樣本:
將5轉換為二進位,從右至左取其前兩位的值,其中1用
a表示,0用b表示,a和b之間用逗號(,)分隔,語句如下:SELECT export_set(5,'a','b',',',2);返回結果如下:
+-----------------------------+ | export_set(5,'a','b',',',2) | +-----------------------------+ | a,b | +-----------------------------+將6轉換為二進位,從右至左取其前十位的值,其中1用
1表示,0用0表示,1和0之間用逗號(,)分隔,語句如下:SELECT export_set(6,'1','0',',',10);返回結果如下:
+------------------------------+ | export_set(6,'1','0',',',10) | +------------------------------+ | 0,1,1,0,0,0,0,0,0,0 | +------------------------------+
FIELD
FIELD(str, str 1, str 2,..., str n);命令說明:返回
str在str 1、str 2、str n列表中的索引位置。 如果未找到str,則返回0。輸入實值型別:VARCHAR。
傳回值類型:BIGINT。
樣本:
SELECT FIELD('Bb', 'Aa', 'Bb', 'Cc', 'Dd', 'Ff');返回結果如下:
sq+-------------------------------------------+ | FIELD('Bb', 'Aa', 'Bb', 'Cc', 'Dd', 'Ff') | +-------------------------------------------+ | 2 | +-------------------------------------------+
FIND_IN_SET
find_in_set(str, strlist) 命令說明:返回
str在列表strlist中的位置。如果
str不在strlist中或者strlist是Null 字元串,返回結果為0。如果
str、strlist任一參數為null,返回結果為null。輸入實值型別:
str和strlist均為VARCHAR類型。傳回值類型:BIGINT。
樣本:
SELECT find_in_set('b','a,b,c,d');返回結果如下:
+----------------------------+ | find_in_set('b','a,b,c,d') | +----------------------------+ | 2 | +----------------------------+
FORMAT
format(X, D)命令說明:將數字
X格式化為#,###,###.##樣式,舍入到D小數位,並將結果作為字串返回。如果
D為0,則返回結果沒有小數點或小數部分。輸入實值型別:
X為DOUBLE類型,D為BIGINT類型。傳回值類型:VARCHAR。
樣本:
SELECT format(12332.123456, 4)AS result1, format(12332.1,4)AS result2, format(12332.2,0)AS result3;返回結果如下:
+-------------+-------------+---------+ | result1 | result2 | result3 | +-------------+-------------+---------+ | 12,332.1235 | 12,332.1000 | 12,332 | +-------------+-------------+---------+
FROM_BASE64
from_base64(x)命令說明:解碼Base64編碼的參數
x並返回結果。輸入實值型別:VARBINARY或VARCHAR。
傳回值類型:VARBINARY。
樣本:
輸入的參數為VARCHAR類型,語句如下:
SELECT from_base64('Q2hpbmE=');返回結果如下:
+--------------------------------------------------+ | from_base64('Q2hpbmE=') | +--------------------------------------------------+ | 0x4368696E61 | +--------------------------------------------------+說明上述語句的傳回值為VARBINARY類型,如需解析為原VARCHAR類型,您可以使用如下語句:
SELECT cast(from_base64('Q2hpbmE=') AS varchar);返回結果如下:
+------------------------------------------+ | cast(from_base64('Q2hpbmE=') AS varchar) | +------------------------------------------+ | China | +------------------------------------------+輸入的參數為VARBINARY類型,語句如下
SELECT from_base64(cast(to_base64('China') AS varbinary));返回結果如下:
+--------------------------------------------------------------------------------------------------------+ | from_base64(cast(to_base64('China') AS varbinary)) | +--------------------------------------------------------------------------------------------------------+ | 0x4368696E61 | +--------------------------------------------------------------------------------------------------------+
FROM_UTF8
from_utf8(x)
from_utf8(x, y)命令說明:
from_utf8(x):解碼UTF-8編碼的x並返回結果。from_utf8(x, y):解碼非UTF-8編碼的參數x,並將其替換為指定的非法字元。說明y可以不填。若不指定y則預設返回�。y可以是非法字元本身(例如#),也可以是非法字元所對應的ASCII碼(例如35)。
輸入實值型別:
x為VARBINARY類型,y為VARCHAR或BIGINT類型。傳回值類型:VARCHAR。
樣本:
解碼UTF-8編碼的參數並返回結果,語句如下:
SELECT from_utf8(to_utf8('hello'));返回結果如下:
+-----------------------------+ | from_utf8(to_utf8('hello')) | +-----------------------------+ | hello | +-----------------------------+解碼非UTF-8編碼的參數,語句如下:
SELECT from_utf8(unhex('58BF'));返回結果如下:
+--------------------------+ | from_utf8(unhex('58BF')) | +--------------------------+ | X� | +--------------------------+解碼非UTF-8編碼的參數,並將其替換為非法字元
#,語句如下:SELECT from_utf8(unhex('58BF'), '#');返回結果如下:
+-------------------------------+ | from_utf8(unhex('58BF'), '#') | +-------------------------------+ | X# | +-------------------------------+解碼非UTF-8編碼的參數,並將其替換為非法字元,其中非法字元的ASCII碼為35,語句如下:
SELECT from_utf8(unhex('58BF'), '35');返回結果如下:
+-------------------------------+ | from_utf8(unhex('58BF'), '35') | +-------------------------------+ | X# | +-------------------------------+
HEX
hex(x)命令說明:將參數
x轉換為其所對應的十六進位格式的字串。輸入實值型別:BIGINT或VARCHAR。
傳回值類型:VARCHAR。
樣本:
輸入實值型別為BIGINT,語句如下:
SELECT hex(16);返回結果如下:
+---------+ | hex(16) | +---------+ | 10 | +---------+輸入實值型別為VARCHAR,語句如下:
SELECT hex('16');返回結果如下:
+-----------+ | hex('16') | +-----------+ | 3136 | +-----------+
INSTR
instr(str, substr)命令說明:返回字串
str中子字串substr首次出現的位置。輸入實值型別:
str和substr均為VARCHAR類型。傳回值類型:BIGINT。
樣本:
SELECT instr('foobarbar', 'bar');返回結果如下:
+---------------------------+ | instr('foobarbar', 'bar') | +---------------------------+ | 4 | +---------------------------+
LEFT
LEFT(str, len)命令說明:返回字串
str中最左邊的len個字元。如果
str或者len為null,則返回結果為null。輸入實值型別:
str為VARCHAR類型,len為BIGINT類型。傳回值類型:VARCHAR。
樣本:
SELECT LEFT('foobarbar', 5);返回結果如下:
+----------------------+ | LEFT('foobarbar', 5) | +----------------------+ | fooba | +----------------------+
LENGTH或OCTET_LENGTH
length(str)
octet_length(str)命令說明:返回字串
str的長度。輸入實值型別:VARCHAR。
傳回值類型:BIGINT。
樣本:
SELECT length('aliyun');返回結果如下:
+------------------+ | length('aliyun') | +------------------+ | 6 | +------------------+
LIKE
expression [NOT] LIKE pattern [ESCAPE 'escape_char']命令說明:
LIKE運算子用於將字串expression與pattern進行匹配,匹配成功返回1,匹配失敗返回0。 其中:pattern為萬用字元模式,萬用字元包括:%:匹配任意長度的字串。_:匹配單個字元。
escape_char:對pattern中的%、_進行轉義,使得逸出字元後面的%、_不作萬用字元使用。
輸入實值型別:
expression、pattern均為VARCHAR類型。傳回值類型:BIGINT。
樣本:
語句如下:
SELECT 'David!' LIKE 'David_' AS result1, 'David!' NOT LIKE 'David_' AS result2, 'David!' LIKE '%D%v%' AS result3;返回結果如下:
+---------+---------+---------+ | result1 | result2 | result3 | +---------+---------+---------+ | 1 | 0 | 1 | +---------+---------+---------+語句如下:
SELECT 'David_' LIKE 'David|_' ESCAPE '|';返回結果如下:
+----------------------------------+ | David_' LIKE 'David|_' ESCAPE '| | +----------------------------------+ | 1 | +----------------------------------+
LOCATE
locate(substr, str)
locate(substr, str, pos)命令說明:返回字串
str中首次出現substr的位置資訊,或者返回字串str中從指定位置pos開始首次出現substr的位置資訊。如果
substr不在str中,返回結果為0。如果
substr或者str為null,返回結果為null。輸入實值型別:
str和substr均為VARCHAR類型,pos為BIGINT類型。傳回值類型:BIGINT。
樣本:
語句如下:
SELECT locate('bar', 'foobarbar');返回結果如下:
+----------------------------+ | locate('bar', 'foobarbar') | +----------------------------+ | 4 | +----------------------------+語句如下:
SELECT locate('bar', 'foobarbar', 7);返回結果如下:
+-------------------------------+ | locate('bar', 'foobarbar', 7) | +-------------------------------+ | 7 | +-------------------------------+
LOWER或LCASE
lower(str)
lcase(str)命令說明:將字串
str中的字母轉換為小寫。傳回值類型:VARCHAR。
傳回值類型:VARCHAR。
樣本:
SELECT lower('Aliyun');返回結果如下:
+-----------------+ | lower('Aliyun') | +-----------------+ | aliyun | +-----------------+
LPAD
lpad(str, len, padstr)命令說明:將字串
str左邊拼接padstr直到長度達到len,並返回拼接後的字串。如果
str長於len,則傳回值將縮短為len個字元。輸入實值型別:
str和padstr均為VARCHAR類型,len為BIGINT類型。傳回值類型:VARCHAR。
樣本:
SELECT lpad('Aliyun',9,'#');返回結果如下:
+----------------------+ | lpad('Aliyun',9,'#') | +----------------------+ | ###Aliyun | +----------------------+
LTRIM
ltrim(str)命令說明:刪除字串
str所有前置空格。輸入實值型別:VARCHAR。
傳回值類型:VARCHAR。
樣本:
SELECT ltrim(' abc');返回結果如下:
+----------------+ | ltrim(' abc') | +----------------+ | abc | +----------------+
MAKE_SET
make_set(bits, str 1, str 2,...);命令說明:返回一個設定值(包含由字元分隔的子字串的字串),其中包含具有相應位設定的字串。
str 1對應於0位,str 2對應於1位,依此類推。str 1,str 2,...中的null值不會附加到結果中。輸入實值型別:
bits為BIGINT類型,str為VARCHAR類型。傳回值類型:VARCHAR。
樣本:
語句如下:
SELECT make_set(5,'hello','nice','world');返回結果如下:
+------------------------------------+ | make_set(5,'hello','nice','world') | +------------------------------------+ | hello,world | +------------------------------------+語句如下:
SELECT make_set(1 | 4,'hello','nice',NULL,'world')AS result;返回結果如下:
+--------+ | result | +--------+ | hello | +--------+
MD5_MUR
MD5_MUR(x)命令說明:先計算入參x的MD5值,再基於murmur3演算法轉換為long型的hash值。相較於CRC32演算法衝突率更低。
輸入實值型別:VARCHAR。
傳回值類型:LONG。
版本限制:叢集核心版本需為3.2.5及以上版本。
樣本:
語句如下:
SELECT MD5_MUR('TEST') as result;返回結果如下:
+--------------------------+ | result | +--------------------------+ | -6711128042951586494 | +--------------------------+
MID
mid(str, pos, len)命令說明:與SUBSTR或SUBSTRING功能相同,從字串
str的pos開始返回len長度的子字串。輸入實值型別:
str為VARCHAR類型,pos和len均為BIGINT類型。傳回值類型:VARCHAR。
樣本:
語句如下:
SELECT mid('Quadratically',5,6);返回結果如下:
+--------------------------+ | mid('Quadratically',5,6) | +--------------------------+ | ratica | +--------------------------+語句如下:
SELECT mid('Sakila', -5, 3);返回結果如下:
+----------------------+ | mid('Sakila', -5, 3) | +----------------------+ | aki | +----------------------+
OCT
oct(N)命令說明:返回整數
N的八進位字串表示形式。如果
N為null,返回結果為null。輸入實值型別:BIGINT。
傳回值類型:VARCHAR。
樣本:
SELECT oct(12);返回結果如下:
+---------+ | oct(12) | +---------+ | 14 | +---------+
ORD
ord(x)命令說明:如果字串
x最左邊的字元是多位元組字元,則返回該字元的代碼。輸入實值型別:VARBINARY或VARCHAR。
傳回值類型:LONG。
樣本:
輸入的參數為VARCHAR類型,語句如下:
SELECT ord('China');返回結果如下:
+--------------+ | ord('China') | +--------------+ | 67 | +--------------+輸入的參數為VARBINARY類型,語句如下
SELECT ord(cast('China' AS varbinary));返回結果如下:
+---------------------------------+ | ord(cast('China' AS varbinary)) | +---------------------------------+ | 67 | +---------------------------------+
POSITION
position(substr IN str);命令說明: 返回字串
str中子字串substr首次出現位置,位置從1開始,如果未找到則返回0。輸入實值型別:
substr和str均為VARCHAR類型。傳回值類型:BIGINT。
樣本:
SELECT position('bar' in 'foobarbar');返回結果如下:
+--------------------------------+ | position('bar' in 'foobarbar') | +--------------------------------+ | 4 | +--------------------------------+
REPEAT
repeat(str, count);命令說明:返回由字串
str重複count次數組成的字串。如果
count<1,則返回Null 字元串。如果
str或count為null,則返回null。輸入實值型別:
str為VARCHAR類型,count為BIGINT類型。傳回值類型:VARCHAR。
樣本:
語句如下:
SELECT repeat('a', 3);返回結果如下:
+----------------+ | repeat('a', 3) | +----------------+ | aaa | +----------------+語句如下:
SELECT repeat('abc', null);返回結果如下:
+---------------------+ | repeat('abc', null) | +---------------------+ | NULL | +---------------------+語句如下:
SELECT repeat(null, 3);返回結果如下:
+-----------------+ | repeat(null, 3) | +-----------------+ | NULL | +-----------------+
REPLACE
replace(str, from_str, to_str);命令說明:將
str中的from_str內容替換為to_str。輸入實值型別:
str、from_str和to_str均為VARCHAR類型。傳回值類型:VARCHAR。
樣本:
SELECT replace('WWW.aliyun.com', 'W', 'w');返回結果如下:
+-------------------------------------+ | replace('WWW.aliyun.com', 'W', 'w') | +-------------------------------------+ | www.aliyun.com | +-------------------------------------+
REVERSE
reverse(str);命令說明:返回
str逆序後的字串。輸入實值型別:VARCHAR。
傳回值類型:VARCHAR。
樣本:
SELECT reverse('123456');返回結果如下:
+-------------------+ | reverse('123456') | +-------------------+ | 654321 | +-------------------+
RIGHT
RIGHT(str, len);命令說明:返回字串
str中最右邊的len個字元。如果
str或者len為null,返回結果為null。輸入實值型別:
str為VARCHAR類型,len為BIGINT類型。傳回值類型:VARCHAR。
樣本:
SELECT RIGHT('abc',3);返回結果如下:
+----------------+ | RIGHT('abc',3) | +----------------+ | abc | +----------------+
RLIKE或REGEXP
expression RLIKE pattern;
expression REGEXP pattern;命令說明:將字串
expression與pattern進行正則匹配,匹配成功返回1,否則返回0。如果
expression或者pattern為null,返回結果為null。輸入實值型別:
expression和pattern均為VARCHAR類型。傳回值類型:BOOLEAN。
樣本:
語句如下:
SELECT 'Michael!' REGEXP '.*';返回結果如下:
+----------------------+ | Michael!' REGEXP '.* | +----------------------+ | 1 | +----------------------+語句如下:
SELECT 'new*\n*line' REGEXP 'new\\*.\\*line';返回結果如下:
+-------------------------------------+ | new*\n*line' REGEXP 'new\\*.\\*line | +-------------------------------------+ | 0 | +-------------------------------------+語句如下:
SELECT 'c' REGEXP '^[a-d]';返回結果如下:
+-------------------+ | c' REGEXP '^[a-d] | +-------------------+ | 1 | +-------------------+
RPAD
rpad(str, len, padstr)命令說明:將字串
str右邊拼接padstr直到長度達到len,並返回拼接後的字串。如果
str長於len,則傳回值將縮短為len個字元。輸入實值型別:
str和padstr均為VARCHAR類型,len為BIGINT類型。傳回值類型:VARCHAR。
樣本:
SELECT rpad('Aliyun',9,'#');返回結果如下:
+----------------------+ | rpad('Aliyun',9,'#') | +----------------------+ | Aliyun### | +----------------------+
RTRIM
rtrim(str)命令說明:刪除字串
str所有後置空格。輸入實值型別:VARCHAR。
傳回值類型:VARCHAR。
樣本:
SELECT rtrim('barbar ');返回結果如下:
+--------------------+ | rtrim('barbar ') | +--------------------+ | barbar | +--------------------+
SPACE
space(N);命令說明:返回由指定數量空格組成的字串。
說明您可以將該函數與
contact()函數組合使用,方便展示返回結果。輸入實值型別:BIGINT。
傳回值類型:VARCHAR。
樣本:
SELECT concat("#", space(6), "#");返回結果如下:
+----------------------------+ | concat("#", space(6), "#") | +----------------------------+ | # # | +----------------------------+
SPLIT
split(string, delimiter)命令說明:將字串
string按分隔字元delimiter進行分隔,並返回數組。輸入實值型別:
string和delimiter均為VARCHAR類型。傳回值類型:ARRAY<varchar>。
樣本:
SELECT split('1#2#3', '#'), split('#1#2#3#', '#'), split('123', '#');返回結果如下:
+---------------------+-----------------------+-------------------+ | split('1#2#3', '#') | split('#1#2#3#', '#') | split('123', '#') | +---------------------+-----------------------+-------------------+ | ["1","2","3"] | ["","1","2","3",""] | ["123"] | +---------------------+-----------------------+-------------------+
SPLIT_PART
split_part(string, delimiter, index)命令說明:將字串
string按分隔字元delimiter分隔,並返回分隔後數組下標為index的子串。index以1開頭,如果大於欄位數則返回NULL。輸入實值型別:
string和delimiter均為VARCHAR類型,index為BIGINT類型。傳回值類型:VARCHAR。
樣本:
SELECT split_part('A#B#C', '#', 2), split_part('A#B#C', '#', 4);返回結果如下:
+-----------------------------+-----------------------------+ | split_part('A#B#C', '#', 2) | split_part('A#B#C', '#', 4) | +-----------------------------+-----------------------------+ | B | NULL | +-----------------------------+-----------------------------+
SPLIT_TO_MAP
split_to_map(string, entryDelimiter, keyValueDelimiter)命令說明:通過
entryDelimiter和keyValueDelimiter拆分字串並返回map。entryDelimiter將字串分解為key-value對,keyValueDelimiter將每對key-value分隔成key和value。輸入實值型別:
string、entryDelimiter和keyValueDelimiter均為VARCHAR類型。傳回值類型:MAP<varchar, varchar>。
樣本:
SELECT split_to_map('k1:v1,k2:v2', ',', ':'),split_to_map('', ',', ':');返回結果如下:
+---------------------------------------+----------------------------+ | split_to_map('k1:v1,k2:v2', ',', ':') | split_to_map('', ',', ':') | +---------------------------------------+----------------------------+ | {"k1":"v1","k2":"v2"} | {} | +---------------------------------------+----------------------------+
STRCMP
strcmp(str 1, str 2);命令說明:如果字串
str 1、str 2相同,返回結果為0。如果str 1根據當前排序次序小於str 2,返回結果為-1,否則返回結果為1。輸入實值型別:
str 1和str 2均為VARCHAR類型。傳回值類型:BIGINT。
樣本:
SELECT strcmp('text', 'text2');返回結果如下:
+-------------------------+ | strcmp('text', 'text2') | +-------------------------+ | -1 | +-------------------------+
SUBSTR或SUBSTRING
substr(str, pos)
substr(str FROM pos)
substr(str, pos, len)
substr(str FROM pos FOR len)
substring(str, pos)
substring(str FROM pos)
substring(str, pos, len)
substring(str FROM pos FOR len)命令說明:
SUBSTRING(varchar str, bigint pos)、SUBSTRING(varchar str FROM pos)返回從pos位置開始到字串結束的子串。如果pos<0,則起始位置從字串的末尾開始倒數。SUBSTRING(varchar str, bigint pos, bigint len)、SUBSTRING(varchar str FROM pos FOR len)返回從pos位置開始長度為len的子串。 如果pos<0,則起始位置從字串的末尾開始倒數。
輸入實值型別:
str為VARCHAR類型,pos和len均為BIGINT類型。傳回值類型:VARCHAR。
樣本:
語句如下:
SELECT substr('helloworld', 6);返回結果如下:
+-------------------------+ | substr('helloworld', 6) | +-------------------------+ | world | +-------------------------+語句如下:
SELECT substr('helloworld' FROM 6);返回結果如下:
+-----------------------------+ | substr('helloworld' FROM 6) | +-----------------------------+ | world | +-----------------------------+語句如下:
SELECT substr('helloworld', 6, 3);返回結果如下:
+----------------------------+ | substr('helloworld', 6, 3) | +----------------------------+ | wor | +----------------------------+語句如下:
SELECT substr('helloworld' from 6 for 3);返回結果如下:
+-----------------------------------+ | substr('helloworld' FROM 6 FOR 3) | +-----------------------------------+ | wor | +-----------------------------------+
SUBSTRING_INDEX
substring_index(str, delim, count)命令說明:返回字串
str中第count個分隔字元(delim)之前或之後的子字串。如果
count>0,返回第count個分隔字元(delim)左側的所有內容,即從左側開始計算。如果
count<0,返回第count個分隔字元(delim)右側的所有內容,即從右側開始計算。搜尋
delim時,SUBSTRING_INDEX函數區分大小寫。輸入實值型別:
str和delim均為VARCHAR類型,count為BIGINT類型。傳回值類型:VARCHAR。
樣本:
SELECT substring_index('www.aliyun.com', '.', 2);返回結果如下:
+-------------------------------------------+ | substring_index('www.aliyun.com', '.', 2) | +-------------------------------------------+ | www.aliyun | +-------------------------------------------+
TO_BASE64
to_base64(x)命令說明:返回參數
x的Base64編碼形式。輸入實值型別:VARBINARY或VARCHAR。
傳回值類型:VARCHAR。
樣本:
輸入的參數為VARCHAR類型,語句如下:
SELECT to_base64('China');返回結果如下:
+--------------------+ | to_base64('China') | +--------------------+ | Q2hpbmE= | +--------------------+輸入的參數為VARBINARY類型,語句如下
SELECT to_base64(cast('China' AS varbinary));返回結果如下:
+---------------------------------------+ | to_base64(cast('China' AS varbinary)) | +---------------------------------------+ | Q2hpbmE= | +---------------------------------------+
TO_UTF8
to_utf8(x)命令說明:返回參數
x的UTF-8編碼形式。輸入實值型別:VARCHAR。
傳回值類型:VARCHAR。
樣本:
SELECT from_utf8(to_utf8('China'));返回結果如下:
+-----------------------------+ | from_utf8(to_utf8('China')) | +-----------------------------+ | China | +-----------------------------+
TRIM
trim([remstr FROM] str)
trim([{BOTH | LEADING | TRAILING} [remstr] FROM] str)命令說明:通過刪除前置空格和尾隨空格或刪除與可選的指定字串
remstr匹配的字元來剪裁字串str。輸入實值型別:VARCHAR。
傳回值類型:VARCHAR。
樣本:
語句如下:
SELECT trim(' bar ');返回結果如下:
+------------------+ | trim(' bar ') | +------------------+ | bar | +------------------+語句如下:
SELECT trim(BOTH 'x' FROM 'xxxbarxxx');返回結果如下:
+---------------------------------+ | trim(BOTH 'x' FROM 'xxxbarxxx') | +---------------------------------+ | bar | +---------------------------------+語句如下:
SELECT trim(LEADING 'x' FROM 'xxxbarxxx');返回結果如下:
+------------------------------------+ | trim(LEADING 'x' FROM 'xxxbarxxx') | +------------------------------------+ | barxxx | +------------------------------------+語句如下:
SELECT trim(TRAILING 'x' from 'xxxbarxxx');返回結果如下:
+-------------------------------------+ | trim(TRAILING 'x' from 'xxxbarxxx') | +-------------------------------------+ | xxxbar | +-------------------------------------+
UPPER或UCASE
upper(str)
ucase(str)命令說明:將字串
str中的字母轉換為大寫。輸入實值型別:VARCHAR。
傳回值類型:VARCHAR。
樣本:
SELECT upper('Aliyun');返回結果如下:
+-----------------+ | upper('Aliyun') | +-----------------+ | ALIYUN |
UNHEX
unhex(x);命令說明:將參數
x中的每對十六進位數字解釋為一個數字,並將其轉換為該數字表示的字元。輸入實值型別:VARBINARY或VARCHAR。
傳回值類型:VARBINARY。
樣本:
輸入的參數為VARCHAR類型,語句如下:
SELECT unhex(hex('China'));返回結果如下:
+------------------------------------------+ | unhex(hex('China')) | +------------------------------------------+ | China | +------------------------------------------+說明上述語句的傳回值為VARBINARY類型,如需解析為原VARCHAR類型,您可以使用如下語句:
SELECT cast(unhex(hex('China')) AS varchar);返回結果如下:
+--------------------------------------+ | cast(unhex(hex('China')) AS varchar) | +--------------------------------------+ | China | +--------------------------------------+輸入的參數為VARBINARY類型,語句如下
SELECT unhex(cast(hex('China') AS varbinary));返回結果如下:
+------------------------------------------+ | unhex(cast(hex('China') AS varbinary)) | +------------------------------------------+ | China | +------------------------------------------+