天天看點

開發指南—函數—字元串函數

支援函數

PolarDB-X支援如下字元串函數:

函數名 描述 示例
ASCII(s) 傳回字元串s的第一個字元的ASCII碼 傳回CustomerName字段第一個字母的ASCII碼:

SELECT ASCII(CustomerName) AS NumCodeOfFirstChar FROM Customers;

CHAR_LENGTH(s) 傳回字元串s的字元數 傳回字元串RUNOOB的字元數:

SELECT CHAR_LENGTH("RUNOOB") AS LengthOfString;

CHARACTER_LENGTH(s)

SELECT CHARACTER_LENGTH("RUNOOB") AS LengthOfString;

CONCAT(s1,s2...sn) 字元串s1,s2等多個字元串合并為一個字元串 合并多個字元串:

SELECT CONCAT("SQL ", "Runoob ", "Gooogle ", "Facebook") AS ConcatenatedString;

CONCAT_WS(x, s1,s2...sn) 同CONCAT(s1,s2,...)函數,但是每個字元串之間要加上x,x可以是分隔符 合并多個字元串,并添加分隔符:

SELECT CONCAT_WS("-", "SQL", "Tutorial", "is", "fun!") AS ConcatenatedString;

FIELD(s,s1,s2...) 傳回第一個字元串s在字元串清單(s1,s2...)中的位置 傳回字元串c在清單值中的位置:

SELECT FIELD("c", "a", "b", "c", "d", "e");

FIND_IN_SET(s1,s2) 傳回在字元串s2中與s1比對的字元串的位置 傳回字元串c在指定字元串中的位置:

SELECT FIND_IN_SET("c", "a,b,c,d,e");

FORMAT(x,n) 函數可以将數字x進行格式化"#,###.##", 将x保留到小數點後n位,最後一位四舍五入。 格式化數字"#,###.##"形式:

SELECT FORMAT(250500.5634, 2); 

傳回:

-- 250,500.56

INSERT(s1,x,len,s2) 字元串s2替換s1的x位置開始長度為len的字元串 從字元串第一個位置開始的6個字元替換為 runoob:

SELECT INSERT("google.com", 1, 6, "runoob"); 

-- runoob.com

LOCATE(s1,s) 從字元串s中擷取s1的開始位置
  • 擷取st在字元串myteststring中的位置:

    SELECT LOCATE('st','myteststring');

    -- 5

  • 傳回字元串abc中b的位置:

    SELECT LOCATE('b', 'abc');

    -- 2

LCASE(s) 将字元串s的所有字母變成小寫字母 字元串RUNOOB轉換為小寫:

SELECT LCASE('RUNOOB');

-- runoob

LEFT(s,n) 傳回字元串s的前n個字元 傳回字元串runoob中的前兩個字元:

SELECT LEFT('runoob',2);

-- ru

LOWER(s)

SELECT LOWER('RUNOOB');

-- runoob

LPAD(s1,len,s2) 在字元串s1的開始處填充字元串s2,使字元串長度達到len 将字元串xx填充到abc字元串的開始處:

SELECT LPAD('abc',5,'xx')

-- xxabc

LTRIM(s) 去掉字元串s開始處的空格 去掉字元串RUNOOB開始處的空格:

SELECT LTRIM("RUNOOB") AS LeftTrimmedString;

-- RUNOOB

MID(s,n,len) 從字元串s的n位置截取長度為len的子字元串,同SUBSTRING(s,n,len) 從字元串RUNOOB中的第2個位置截取3個 字元:

SELECT MID("RUNOOB", 2, 3) AS ExtractString;

-- UNO

POSITION(s1 IN s)

SELECT POSITION('b' in 'abc');

-- 2

REPEAT(s,n) 将字元串s重複n次 将字元串runoob重複三次:

SELECT REPEAT('runoob',3;

-- runoobrunoobrunoob

REPLACE(s,s1,s2) 将字元串s2替代字元串s中的字元串s1 将字元串abc中的字元a替換為字元x:

SELECT REPLACE('abc','a','x');

--xbc

REVERSE(s) 将字元串s的順序反過來 将字元串abc的順序反過來:

SELECT REVERSE('abc'); 

-- cba

RIGHT(s,n) 傳回字元串s的後n個字元 傳回字元串runoob的後兩個字元:

SELECT RIGHT('runoob',2);

-- ob

RPAD(s1,len,s2) 在字元串s1的結尾處添加字元串s2,使字元串的長度達到len 将字元串xx填充到abc字元串的結尾處:

SELECT RPAD('abc',5,'xx');

-- abcxx

RTRIM(s) 去掉字元串s結尾處的空格 去掉字元串RUNOOB的末尾空格:

SELECT RTRIM("RUNOOB") AS RightTrimmedString;

-- RUNOOB

SPACE(n) 傳回n個空格 傳回10個空格:

SELECT SPACE(10);

STRCMP(s1,s2) 比較字元串s1和s2,如果s1與s2相等傳回0 ,如果s1>s2傳回1,如果s1<s2,傳回-1 比較字元串:

SELECT STRCMP("runoob", "runoob");

-- 0

SUBSTR(s, start, length) 從字元串s的start位置截取長度為length的子字元串

SELECT SUBSTR("RUNOOB", 2, 3) AS ExtractString; 

-- UNO

SUBSTRING(s, start, length)

SELECT SUBSTRING("RUNOOB", 2, 3) AS ExtractString;

-- UNO

SUBSTRING_INDEX(s, delimiter, number)

傳回從字元串s的第number個出現的分隔符delimiter之後的子串。

如果number是正數,傳回第number個字元左邊的字元串。

如果number是負數,傳回第(number的絕對值(從右邊數))個字元右邊的字元串。

  • SELECT SUBSTRING_INDEX('a*b','*',1);

    -- a

  • SUBSTRING_INDEX('a*b','*',-1);

    -- b

  • SUBSTRING_INDEX(SUBSTRING_INDEX('a*b*c*d*e','*',3),'*',-1);

    -- c

TRIM(s) 去掉字元串s開始和結尾處的空格 去掉字元串RUNOOB的首尾空格:

SELECT TRIM('RUNOOB') AS TrimmedString;

UCASE(s) 将字元串轉換為大寫 将字元串runoob轉換為大寫:

SELECT UCASE("runoob");

-- RUNOOB

UPPER(s)

SELECT UPPER("runoob"); 

-- RUNOOB

不支援函數

與MySQL5.7相比,PolarDB-X暫不支援如下字元串函數:

LOAD_FILE() 加載檔案
MATCH 全文檢索
SOUNDS LIKE 同音字元串比較