MySQL 常見函數

jopen 10年前發布 | 13K 次閱讀 MySQL 數據庫服務器

字符串函數


CONCAT(str1,str2,...)
返回結果為連接參數產生的字符串。如有任何一個參數為NULL ,則返回值為 NULL。
  1. mysql> SELECT CONCAT('My''S''QL');  
  2.         -> 'MySQL'  
  3.   
  4. mysql> SELECT CONCAT('My'NULL'QL');  
  5.         -> NULL  
  6.   
  7. mysql> SELECT CONCAT(14.3);  
  8.         -> '14.3'  

GROUP_CONCAT函數
將取得的值用逗號連接。
  1. select group_concat(id) from table_name;  
得到的結果是(1,2,3,4,5)

LEFT,RIGHT函數
left(str,n)或者right(str,n)
返回字符串最左邊/右邊的n個字符。

LENGTH函數,CHAR_LENGTH函數
length(str) char_length(str)
length: 是計算字段的長度一個漢字是算兩個字符,一個數字或字母算一個字符
char_length:不管漢字還是數字或者是字母都算是一個字符。

SUBSTRING()
SUBSTRING(str,pos,len)
SUBSTRING(str FROM pos FOR len)
SUBSTRING(str,pos)
SUBSTRING(str FROM pos)
  1. mysql> SELECT SUBSTRING(‘Quadratically’,5);-> ‘ratically’  
  2. mysql> SELECT SUBSTRING(‘foobarbar’ FROM 4);-> ‘barbar’  
  3. mysql> SELECT SUBSTRING(‘Quadratically’,5,6);-> ‘ratica’  
  4. mysql> SELECT SUBSTRING(‘Sakila’, -3);-> ‘ila’  
  5. mysql> SELECT SUBSTRING(‘Sakila’, -5, 3);-> ‘aki’  
  6. mysql> SELECT SUBSTRING(‘Sakila’ FROM -4 FOR 2);-> ‘ki’  

SUBSTRING_INDEX(str,delim,count)
返回字符串 str 中在第 count 個出現的分隔符 delim 之前的子串。
如果 count 是一個正數,返回從最后的(從左邊開始計數)分隔符到左邊所有字符。
如果 count 是負數,返回從最后的(從右邊開始計數)分隔符到右邊所有字符。 
mysql>SELECT SUBSTRING_INDEX('www.baidu.com', '.', 2); -> 'www.baidu' 
mysql> SELECT SUBSTRING_INDEX('www.baidu.com', '.', -2); -> 'baidu.com' 

控制流函數


CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END 
CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
在第一個方案的返回結果中, value=compare-value。而第二個方案的返回結果是第一種情況的真實結果。如果沒有匹配的結果值,則返回結果為ELSE后的結果,如果沒有ELSE 部分,則返回值為 NULL。

IF(expr1,expr2,expr3)函數
如果expr1為True,則返回expr2,否則返回expr3。
expr1 作為一個整數值進行計算,就是說,假如你正在驗證浮點值或字符串值, 那么應該使用比較運算進行檢驗。
  1. mysql> SELECT IF(1>2,2,3);  
  2.         -> 3  
  3.   
  4. mysql> SELECT IF(1<2,'yes ','no');  
  5.         -> 'yes'  
  6.   
  7. mysql> SELECT IF(STRCMP('test','test1'),'no','yes');  
  8.         -> 'no'  

IFNULL(expr1,expr2)
假如expr1 不為 NULL,則 IFNULL() 的返回值為 expr1; 否則其返回值為 expr2。IFNULL()的返回值是數字或是字符串,具體情況取決于其所使用的語境。這個函數一般用來替換NULL值,因為NULL值是不能參與數值運算的,下面這個語句就可以把NULL值用0來替換。
  1. mysql> SELECT IFNULL(1,0);  
  2.         -> 1  
  3.   
  4. mysql> SELECT IFNULL(NULL,10);  
  5.         -> 10  
  6.   
  7. mysql> SELECT IFNULL(1/0,10);  
  8.         -> 10  
  9.   
  10. mysql> SELECT IFNULL(1/0,'yes');  
  11.         -> 'yes'  

NULLIF(expr1,expr2)
如果expr1 = expr2 成立,那么返回值為NULL,否則返回值為 expr1。
這和CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END相同。
  1. mysql> SELECT NULLIF(1,1);  
  2.         -> NULL  
  3.   
  4. mysql> SELECT NULLIF(1,2);  
  5.         -> 1  

coalesce函數,返回參數中第一個不為空的值
  1. select coalesce(a,b,c) from table_name;  
如果a不為null,則選擇a;如果a為null ,則選擇b;如果b為null,則選擇c;如果a、b、c都為null,則返回null。

GREATEST(value1,value2,...)
當有2或多個參數時,返回值為最大(最大值的)參數。比較參數所依據的規律同LEAST()相同。
  1. mysql> SELECT GREATEST(2,0);  
  2.         -> 2  
  3.   
  4. mysql> SELECT GREATEST(34.0,3.0,5.0,767.0);  
  5.         -> 767.0  
  6.   
  7. mysql> SELECT GREATEST('B','A','C');  
  8.         -> 'C'  


時間函數


CURDATE()
返回當前日期,只包含年月日

UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date)
若無參數調用,則返回一個Unix timestamp ('1970-01-01 00:00:00' GMT 之后的秒數) 作為無符號整數。若用date 來調用UNIX_TIMESTAMP(),它會將參數值以'1970-01-01 00:00:00' GMT后的秒數的形式返回。date 可以是一個DATE 字符串、一個 DATETIME字符串、一個 TIMESTAMP或一個當地時間的YYMMDD 或YYYMMDD格式的數字。
  1. mysql> SELECT UNIX_TIMESTAMP();  
  2.         -> 882226357  
  3.   
  4. mysql> SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00');  
  5.         -> 875996580  

FROM_UNIXTIME()
返回unix時間戳的日期值。

TO_DAYS(date)
給定一個日期date, 返回一個天數 (從年份0開始的天數 )。
  1. mysql> SELECT TO_DAYS(950501);  
  2.         -> 728779  
  3.   
  4. mysql> SELECT TO_DAYS('1997-10-07');  
  5.         -> 729669  

DATEDIFF函數
datediff(date1,date2)用來計算兩個日期之間相差的天數。

EXTRACT() 函數用于返回日期/時間的單獨部分,比如年、月、日、小時、分鐘等等。
EXTRACT(unit FROM date)

date 參數是合法的日期表達式。unit 參數可以是下列的值:

Unit 值
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH

數學函數


ROUND(x)返回離x最近的整數,也就是對x進行四舍五入處理
ROUND(x,y)返回x保留到小數點后y位的值,在截取時進行四舍五入處理
TRUNCATE(x,y)返回x保留到小數點后y位的值,不進行四舍五入操作
符號函數SIGN(x),返回x的符號,正數為1,負數為-1,0為0
CEIL(x)和CEILING(x)返回大于或等于x的最小整數
FLOOR(x)返回小于或等于x的最大整數

其他函數


MD5(str),返回字符串str的MD5值。常用于對應用中的數據進行加密。
select MD5('123456')

INET_ATON(IP地址),返回IP地址的網絡字節序表示
INET_NTOA(num),返回網絡字節序代碼的ip地址。

來自:http://blog.csdn.net/magicharvey/article/details/18665637
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!