全部產品
Search
文件中心

AnalyticDB:字串函數

更新時間:Feb 06, 2026

字串函數用於字串處理,例如轉換大小寫、去除空格、提取子串等。本文介紹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:通過entryDelimiterkeyValueDelimiter拆分字串,並返回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的二進位字串。

    如果Nnull,則返回結果為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, ...)
  • 命令說明: 返回N1N2等整數對應的十進位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。

  • 輸入實值型別:bitsnumber_of_bits均為BIGINT類型,onstroffstrseparator均為VARCHAR類型。

  • 傳回值類型:VARCHAR。

  • 樣本:

    • 將5轉換為二進位,從右至左取其前兩位的值,其中1用a表示,0用b表示,ab之間用逗號(,)分隔,語句如下:

      SELECT export_set(5,'a','b',',',2);

      返回結果如下:

      +-----------------------------+
      | export_set(5,'a','b',',',2) |
      +-----------------------------+
      | a,b                         |
      +-----------------------------+             
    • 將6轉換為二進位,從右至左取其前十位的值,其中1用1表示,0用0表示,10之間用逗號(,)分隔,語句如下:

      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);
  • 命令說明:返回strstr 1str 2str 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

    如果strstrlist任一參數為null,返回結果為null

  • 輸入實值型別:strstrlist均為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小數位,並將結果作為字串返回。

    如果D0,則返回結果沒有小數點或小數部分。

  • 輸入實值型別: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。

    說明

    解碼後的傳回值為VARBINARY類型,您可以通過如下方式將返回結果轉換為VARCHAR類型:

    • AnalyticDB for MySQL叢集版本大於或等於3.1.4,您可以使用CAST AS VARCHAR函數來轉換資料類型。更多資訊,請參見CAST函數

    • AnalyticDB for MySQL叢集版本小於3.1.4,您可以使用FROM_UTF8函數來轉換資料類型。更多資訊,請參見FROM_UTF8

  • 樣本:

    • 輸入的參數為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首次出現的位置。

  • 輸入實值型別:strsubstr均為VARCHAR類型。

  • 傳回值類型:BIGINT。

  • 樣本:

    SELECT instr('foobarbar', 'bar');

    返回結果如下:

    +---------------------------+
    | instr('foobarbar', 'bar') |
    +---------------------------+
    |                         4 |
    +---------------------------+

LEFT

LEFT(str, len)
  • 命令說明:返回字串str中最左邊的len個字元。

    如果str或者lennull,則返回結果為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運算子用於將字串expressionpattern進行匹配,匹配成功返回1,匹配失敗返回0。 其中:

    • pattern為萬用字元模式,萬用字元包括:

      • %:匹配任意長度的字串。

      • _:匹配單個字元。

    • escape_char:對pattern中的%_進行轉義,使得逸出字元後面的%_不作萬用字元使用。

  • 輸入實值型別:expressionpattern均為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或者strnull,返回結果為null

  • 輸入實值型別:strsubstr均為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個字元。

  • 輸入實值型別:strpadstr均為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 1str 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功能相同,從字串strpos開始返回len長度的子字串。

  • 輸入實值型別:str為VARCHAR類型,poslen均為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的八進位字串表示形式。

    如果Nnull,返回結果為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

  • 輸入實值型別:substrstr均為VARCHAR類型。

  • 傳回值類型:BIGINT。

  • 樣本:

    SELECT position('bar' in 'foobarbar');                 

    返回結果如下:

    +--------------------------------+
    | position('bar' in 'foobarbar') |
    +--------------------------------+
    |                              4 |
    +--------------------------------+

REPEAT

repeat(str, count);
  • 命令說明:返回由字串str重複count次數組成的字串。

    如果count<1,則返回Null 字元串。

    如果strcountnull,則返回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

  • 輸入實值型別:strfrom_strto_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或者lennull,返回結果為null

  • 輸入實值型別:str為VARCHAR類型,len為BIGINT類型。

  • 傳回值類型:VARCHAR。

  • 樣本:

    SELECT RIGHT('abc',3);             

    返回結果如下:

    +----------------+
    | RIGHT('abc',3) |
    +----------------+
    | abc            |
    +----------------+

RLIKE或REGEXP

expression RLIKE pattern;
expression REGEXP pattern;
  • 命令說明:將字串expressionpattern進行正則匹配,匹配成功返回1,否則返回0

    如果expression或者patternnull,返回結果為null

  • 輸入實值型別:expressionpattern均為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個字元。

  • 輸入實值型別:strpadstr均為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進行分隔,並返回數組。

  • 輸入實值型別:stringdelimiter均為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。

  • 輸入實值型別:stringdelimiter均為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)
  • 命令說明:通過entryDelimiterkeyValueDelimiter拆分字串並返回mapentryDelimiter將字串分解為key-value對,keyValueDelimiter將每對key-value分隔成keyvalue

  • 輸入實值型別:stringentryDelimiterkeyValueDelimiter均為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 1str 2相同,返回結果為0。如果str 1根據當前排序次序小於str 2,返回結果為-1,否則返回結果為1

  • 輸入實值型別:str 1str 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類型,poslen均為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函數區分大小寫。

  • 輸入實值型別:strdelim均為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。

    說明
    • 解碼後的傳回值為VARBINARY類型,您可以通過如下方式將返回結果轉換為VARCHAR類型:

      • AnalyticDB for MySQL叢集版本大於或等於3.1.4,您可以使用CAST AS VARCHAR函數來轉換資料類型。更多資訊,請參見CAST函數

      • AnalyticDB for MySQL叢集版本小於3.1.4,您可以使用FROM_UTF8函數來轉換資料類型。更多資訊,請參見FROM_UTF8

    • 如果UNHEX的輸入值中包含任何非十六進位數字,則返回NULL。

  • 樣本:

    • 輸入的參數為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                                    |
      +------------------------------------------+