SQL常用函數


字符串函數:

字符串連接:CONCAT()和CONCAT_WS()

CONCAT主要實現字符串拼接成為一個字符串:

SELECT CONCAT('My','S','QL')

CONCAT_WS()函數全程為CONCAT With Separator,是CONCAT()函數的特殊形式。函數CONCAT_WS()的定義如下:
CONCAT_WS(SEP,S1,S2,…SN)
上述函數與CONCAT()相比,多了一個表示分割符的SEP參數,即不僅將傳入的其他參數連接起來,而且還會通過分割符將各個字符串分割開。分隔符可以是一個字符串,也可以是其他參數。如果分隔符為NULL,則返回結果為NULL。函數會忽略任何分隔符參數后的NULL值。

比較字符串大小函數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');

  

獲取字符串長度函數LENGTH()和字符數函數CHAR_LENGTH()

LENGTH(str)
上述函數會獲取傳入的參數str的長度。會計算空格長度。

函數CHAR_LENGTH()的定義如下:

CHAR_LENGTH(str)

實現字母大小寫轉換函數UPPER()和字符數函數LOWER()
在MySQL軟件中可以通過函數UPPER()和UCASE()實現將字符串的所有字母轉變成大寫字母。查看幫助文檔,函數UPPER()的定義如下:
UPPER(S)
上述函數會將所傳入的字符串對象S中所有字母全部轉換成大寫字母。
關於實現字母大寫轉換函數除了UPPER()外,還可以通過函數UCASE()來實現,其具體定義如下:
UCASE(S)

 

查找字符串

1.返回字符串位置的函數FIND_IN_SET() 在MySQL軟件中可以通過函數FIND_IN_SET()獲取相匹配字符串的位置。位置從第一個字符串開始計算。

2.返回指定字符串位置的函數FIELD()
FIELD(str,str1,str2…) 上述函數將會返回第一個與字符串str匹配的字符串的位置。如果沒有找到返回0;

從現有字符串中截取子字符串

1.從左邊或右邊截取子字符串

LEFT(str,num)
RIGHT(str,num)

2.截取指定位置和長度子字符串

SUBSTRING(str,num,len)
MID(str,num,len)

 

去除字符串的首尾空格

LTRIM()、函數RTRIM()和函數TRIM()。
1.去除字符串開始處空格
LTRIM(str)


2.去除字符串結束處空格
RTRIM(str)
3.去除字符串首尾空格
TRIM(str)

替換字符串

1.使用INSERT()函數

INSERT(str,pos,len,newstr))
SELECT '這是MySQL數據庫管理系統' 字符串,
INSERT('這是MySQL數據庫管理系統',3,5,'Oracle') 轉換后字符串;

 

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

SELECT '這是MySQL數據庫管理系統' 字符串, CHAR_LENGTH('這是MySQL數據庫管理系統') 字符串字符數,
INSERT('這是MySQL數據庫管理系統',16,15,'Oracle') 轉換后字符串;
(3)執行SQL函數INSERT(),當所要替換的長度大於原來字符串中所剩字符串的長度,則從起始位置開始進行全部替換,具體SQL語句如下:
SELECT '這是MySQL數據庫管理系統' 字符串,CHAR_LENGTH('MySQL數據庫管理系統') 剩余字符數,
INSERT('這是MySQL數據庫管理系統',3,15,'Oracle') 轉換后字符串;
2.使用REPLACE()函數
REPLACE(str,substr,newstr))
SELECT '這是MySQL數據庫管理系統' 原字符串,
REPLACE('這是MySQL數據庫管理系統','MySQL','Oracle') 替換后字符串;

 


 數值函數:

獲取隨機數

SELECT RAND(),RAND(),RAND(3),RAND(3);

 

獲取整數的函數
CEIL(x)——向上取整

FLOOR(x)——向下取整

 

截取數值函數

TRUNCATE(x,y)

對x保留y位精度,當y=-1時精度達到最小值。

 

四舍五入函數
ROUND(x)
ROUND(x,y)


 

日期時間函數: 

SELECT NOW() now方式,CURRENT_TIMESTAMP() timestamp方式,
LOCALTIME() localtime方式,SYSDATE() systemdate方式;

 

通過各種方式顯示日期和時間
SELECT NOW() 當前時間,
UNIX_TIMESTAMP(NOW()) unix格式,
FROM_UNIXTIME(UNIX_TIMESTAMP(NOW())) 普通格式;


SELECT NOW() 當前時間,
UNIX_TIMESTAMP() unix格式,
UNIX_TIMESTAMP(NOW()) unix格式;

 

可以利用from_unixtime將一個整型轉換成日期時間,計算的是從1970年開始計算的秒數。


 

系統信息函數:

獲取MySQL系統信息

SELECT
VERSION() 版本號,
DATABASE() 數據庫名,
USER() 用戶名;

 

 


 

其他:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM