標籤:
一. 使用字串函數
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的常用函數(全)