mysql的常用函數(全)

來源:互聯網
上載者:User

標籤:

一. 使用字串函數

1. 合并字串函數CONCAT()和CONCAT_WS()1.1 函數CONCAT()CONCAT()函數會將傳入的參數串連起來返回所合并的字串類型資料。如果其中一個參數為NULL,則傳回值為NULL。
SELECT CONCAT(‘My‘,‘S‘,‘QL‘) 合并後字串;

SELECT CONCAT(CURDATE(),12.34) 合并後字串;

SELECT CONCAT(‘My‘,‘S‘,‘QL‘,NULL) 合并後字串;

1.2 函數CONCAT_WS()

CONCAT_WS(SEP,S1,S2,…SN)函數與CONCAT()相比,多了一個表示分割符的SEP參數,即不僅將傳入的其他參數串連起來,而且還會通過分割符將各個字串分割開。分隔字元可以是一個字串,也可以是其他參數。如果分隔字元為NULL,則返回結果為NULL。函數會忽略任何分隔字元參數後的NULL值。

SELECT CONCAT_WS(‘-‘,‘029‘,88461234) 合并後字串

執行SQL函數CONCAT_WS(),當分割符參數的值為NULL時,具體SQL語句如下:

SELECT CONCAT_WS(NULL,‘029‘,88461234) 合并後字串;

執行結果顯示,當所傳入的第一個參數值為NULL,返回的結果值將為NULL,因此返回結果為NULL。

執行SQL函數CONCAT_WS(),當分割符參數後值存在NULL時,具體SQL語句如下:

SELECT CONCAT_WS(‘-‘,‘029‘,NULL,88461234) 合并後字串;

執行結果顯示,當所傳入的參數(除第一個參數外)值中有NULL,返回的結果值將忽略NULL,因此返回結果為029-88461234。

2. 比較字串大小函數STRCMP()

STRCMP(str1,str2)函數用來比較字串參數str1和str2,如果參數str1大於str2,則返回結果1;如果參數str1小於str2,則返回結果-1;如果參數str1等於str2,則返回結果0。

SELECT STRCMP(‘abc‘,‘abd‘),    STRCMP(‘abc‘,‘abc‘),    STRCMP(‘abc‘,‘abb‘);

3. 擷取字串長度函數LENGTH()和字元數函數CHAR_LENGTH()

通過函數LENGTH()和CHAR_LENGTH()擷取字串的長度。LENGTH(str)函數會擷取傳人的參數str的長度,CHAR_LENGTH(str)函數會擷取傳人的參數str的字串。

3.1 函數LENGTH()

SELECT ‘MySQL‘ 英文字串,LENGTH(‘MySQL‘) 字串字元長度,‘常建功‘ 中文字串,LENGTH(‘常建功‘) 字串字元長度

由於一個英文字元佔一個位元組,所以字串‘MySQL‘的長度為5,由於一個漢字字元佔3個字元(有的書說是2個),所以字串‘常建功‘的長度為6。

3.2 函數CHAR_LENGTH()

SELECT ‘MySQL‘ 英文字串,CHAR_LENGTH(‘MySQL‘) 字串字元長度,‘常建功‘ 中文字串,CHAR_LENGTH(‘常建功‘) 字串字元長度

字串‘MySQL‘共有5個字元,但是佔有6個位元組空間。這是因為每個字串都會以\0結束,結束符\0也會佔用一個位元組空間。

4. 實現字母大小寫轉換函式UPPER()和字元數函數LOWER()4.1 函數UPPER()和UCASE()函數會將字串中的所有字母轉換成大寫字母。
SELECT ‘mysql‘ 字串,UPPER(‘mysql‘) 轉換後字串,UCASE(‘mysql‘) 轉換後字串;

4.2 函數LOWER()和LCASE()函數會將字串中的所有字母轉換成小寫字母。

SELECT ‘MYSQL‘ 字串,LOWER(‘MYSQL‘) 轉換後字串,LCASE(‘MYSQL‘) 轉換後字串;

5. 尋找字串

5.1 返回字串位置的函數FIND_IN_SET() 。

通過函數FIND_IN_SET(str1,str2)擷取相匹配字串的位置,該函數會返回在字串str2中與str1相匹配的字串的位置,參數str2字串中將包含若干個用逗號隔開的字串。

SELECT FIND_IN_SET(‘MySQL‘,‘orcle,sql server,MySQL‘) 位置;

5.2 返回指定字串位置的函數FIELD()

通過函數FIELD(str,str1,str2…) 擷取相匹配字串的位置。該函數將會返回第一個與字串str匹配的字串的位置。

SELECT FIELD(‘MySQL‘,‘orcle‘,‘sql server‘,‘MySQL‘) 位置;

5.3 返回子字串相匹配的開始位置

可以通過三個函數擷取子字串相匹配的開始位置,它們分別為函數LOCATE()、POSITION()和INSTR()。

LOCATE(str1,str) 函數將會返回參數str中字串str1的開始位置。其他兩個函數定義如下:POSITION(str1 IN str) INSTR(str,str1)。

SELECT LOCATE(‘SQL‘,‘MySQL‘) 位置,POSITION(‘SQL‘ IN ‘MySQL‘) 位置,INSTR(‘MySQL‘,‘SQL‘) 位置;

5.4 返回指定位置的字串的函數ELT()

通過函數ELT(n,str1,str2…)擷取指定位置的字串,該函數將會返回第n個字串。

SELECT ELT(1,‘MySQL‘,‘orcle‘,‘sql server‘) 第1個位置的字串;

5.5 選擇字串的函數MAKE_SET()

可以通過函數MAKE_SET(num,str1,str2…strn)擷取字串,該函數首先會將數值num轉換成位元,然後按照位元從參數str1,str2,……,strn中選取相應的字串。在通過位元來選擇字串時,會從右至左的順序讀取該值,如果值為1值選擇該字串,否則將不選擇該字串。

SELECT BIN(5) 位元,MAKE_SET(5,‘MySQL‘,‘Oracle‘,‘SQL Server‘,‘PostgreSQL‘) 選取後的字串,    BIN(7) 位元,MAKE_SET(7,‘MySQL‘,‘Oracle‘,‘SQL Server‘,‘PostgreSQL‘) 選取後的字串;

6. 從現有字串中截取子字串

在MySQL中提供了豐富的函數去實現截取子字串功能,分別為函數LEFT()、函數RIGHT()、函數SUBSTRING()和函數MID()。

6.1 從左邊或右邊截取子字串

LEFT(str,num):返回字串str中的包含前num個字母(從左邊數)的字串。

RIGHT(str,num):返回字串str中的包含後num個字母(從右邊數)的字串。

SELECT ‘MySQL‘ 字串,LEFT(‘MySQL‘,2) 前兩個字元,RIGHT(‘MySQL‘,3) 後三個字元;

6.2 截取指定位置和長度子字串

SUBSTRING(str,num,len):返回字串str中的第num個位置開始長度為len的子字串。

MID(str,num,len)

SELECT ‘oraclemysql‘ 字串,SUBSTRING(‘oraclemysql‘,7,5) 截取子字串,MID(‘oraclemysql‘,7,5) 截取子字串;

7. 去除字串的首尾空格

在MySQL中提供了豐富函數去實現去除字串空格功能,分別為函數LTRIM()、函數RTRIM()和函數TRIM()。LTRIM(str)去除字串開始處空格,RTRIM(str)去除字串結束處空格,TRIM(str)去除字串首尾空格。

SELECT CONCAT(‘-‘,‘  MySQL‘,‘-‘) 原來字串,CHAR_LENGTH(CONCAT(‘-‘,‘  MySQL‘,‘-‘)) 原來字串長度,CONCAT(‘-‘,LTRIM(‘  MySQL‘),‘-‘) 處理後字串,CHAR_LENGTH(CONCAT(‘-‘,LTRIM(‘  MySQL‘),‘-‘)) 處理後字串串長度

8. 替換字串8.1 使用INSERT()函數INSERT(str,pos,len,newstr):該函數會將字串str中的pos位置開始長度為len的字串用字串ewstr來替換。如果參數pos的值超過字串長度,則傳回值為原始字串str。如果len的長度大於原來字串(str)中所剩字串的長度,則從位置pos開始進行全部替換。若任何一個參數為NULL,則傳回值為NULL。
SELECT ‘這是MySQL資料庫管理系統‘ 字串,    INSERT(‘這是MySQL資料庫管理系統‘,3,5,‘Oracle‘) 轉換後字串;

執行SQL函數INSERT(),當替換的起始位置大於字串長度,具體SQL語句如下:

SELECT ‘這是MySQL資料庫管理系統‘ 字串, CHAR_LENGTH(‘這是MySQL資料庫管理系統‘) 字串字元數,    INSERT(‘這是MySQL資料庫管理系統‘,16,15,‘Oracle‘) 轉換後字串;

執行SQL函數INSERT(),當所要替換的長度大於原來字串中所剩字串的長度,則從起始位置開始進行全部替換,具體SQL語句如下:

SELECT ‘這是MySQL資料庫管理系統‘ 字串,CHAR_LENGTH(‘MySQL資料庫管理系統‘) 剩餘字元數,    INSERT(‘這是MySQL資料庫管理系統‘,3,15,‘Oracle‘) 轉換後字串;

8.2 使用REPLACE()函數

REPLACE(str,substr,newstr)):該函數會將字串str中的子字串substr用字串newstr來替換。

SELECT ‘這是MySQL資料庫管理系統‘ 原字串,    REPLACE(‘這是MySQL資料庫管理系統‘,‘MySQL‘,‘Oracle‘) 替換後字串;

二. 使用數值函數

一. 使用日期函數

一. 使用系統資訊函數

mysql的常用函數(全)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.