MySQL常用函數與運算符
運算符
算術運算符
MySQL 支持的算術運算符包括加、減、乘、除和模運算。 在除法運算和模運算中,如果除數為0,將是非法除數,返回結果為NULL。
比較運算符
當使用SELECT語句進行查詢時, MySQL允許用戶對表達式的左邊操作數和右邊操作數進行比較,比較結果為真,則返回1,為假則返回 0,比較結果不確定則返回NULL。
|符號|描述|備注 |---|---|---| |=| 等于 | |<>, != | 不等于| |>| 大于| |<| 小于| |<= | 小于| | \>= | 大于等于 | |BETWEEN| 在兩值之間 | >=min&&<=max |NOT BETWEEN| 不在兩值之間 | |IN | 在集合中 | |NOT IN | 不在集合中| |<=> | 嚴格比較兩個NULL值是否相等|兩個操作碼均為NULL時,其所得值為1;而當一個操作碼為NULL時,其所得值為0 |LIKE | 簡單模式匹配| |REGEXP | 正則式匹配 | |IS NULL | 為空 | |IS NOT NULL | 不為空 |
- 若有一個或兩個參數為 NULL,除非NULL<=> NULL 等運算符,則比較運算的結果為NULL。
- 若同一個比較運算中的兩個參數都是字符串,則按照字符串進行比較。
- 若兩個參數均為整數,則按照整數進行比較。
邏輯運算符
|運算符|作用| |---|---| |AND&&|邏輯與| |OR \|\||邏輯或| |NOT !|邏輯非| |XOR|異或|
位運算符
|運算符|作用| |---|---| |&|位與| |\||位或| |~|位取反| |^|位異或| |>>|右移| |<<|左移|
常用函數
字符串函數
|函數|說明|備注| |---|---|---| |ASCII(char)| 返回字符的ASCII碼值 |BIT LENGTH(str) | 返回字符串的比特長度 |LENGTH(s) | 返回字符串str中的字符數 |CONCAT(s1,s2...,sn)| 將s1,s2...,sn連接成字符串|任何字符串與NULL進行連接的結果都將是NULL |CONCAT WS(sep,s1,s2...,sn)| 將s1,s2...,sn連接成字符串,并用sep字符間隔 |LOWER(str) UPPER(str) | 返回將字符串str中所有字符改變為小/大寫后的結果 |LEFT(str,x) RIGHT(str,x) | 返回字符串str中最左/右邊的x個字符|如果第二個參數是NULL,那么將不返回任何字符串。 |LTRIM(str) | 從字符串str中切掉開頭的空格 |REPEAT(str,srchstr,rplcstr)|返回字符串str重復x次的結果 |REVERSE(str)| 返回顛倒字符串str的結果 |RTRIM(str) | 返回字符串str尾部的空格 |STRCMP(s1,s2) | 比較字符串s1和s2 |TRIM(str) | 去除字符串首部和尾部的所有空格
數值函數
|函數|說明| |---|---| |ABS(x) | 返回x的絕對值 |BIN(x)| 返回x的二進制(OCT返回八進制,HEX返回十六進制) |CEILING(x)| 返回大于x的最小整數值 |FLOOR(x)| 返回小于x的最大整數值 |MOD(x,y) | 返回x/y的模(余數) |PI()| 返回pi的值(圓周率) |RAND() | 返回0到1內的隨機值,可以通過提供一個參數(種子)使RAND()隨機數生成器生成一個指定的值。 |ROUND(x,y) | 返回參數x的四舍五入的有y位小數的值
日期時間函數
|函數|說明| |---|---| |CURRENT DATE() |返回當前的日期 |CURRENT TIME() |返回當前的時間 |DATE ADD(date,INTERVAL int keyword)| 返回日期date加上間隔時間int的結果(int必須按照關鍵字進行格式化),如:SELECT DATE ADD(CURRENT DATE,INTERVAL 6 MONTH); |DATE FORMAT(date,fmt) | 依照指定的fmt格式格式化日期date值 |DATE SUB(date,INTERVAL int keyword)| 返回日期date加上間隔時間int的結果(int必須按照關鍵字進行格式化),如:SELECT DATE SUB(CURRENT DATE,INTERVAL 6 MONTH); |DAYOFWEEK(date) | 返回date所代表的一星期中的第幾天(1~7) |DAYOFMONTH(date) | 返回date是一個月的第幾天(1~31) |DAYOFYEAR(date) | 返回date是一年的第幾天(1~366) |FROM UNIXTIME(ts,fmt) | 根據指定的fmt格式,格式化UNIX時間戳ts |UNIX_TIMESTAMP(date)|返回日期date的UNIX時間戳 |HOUR(time) | 返回time的小時值(0~23) |MINUTE(time) | 返回time的分鐘值(0~59) |MONTH(date) | 返回date的月份值(1~12) |NOW() | 返回當前的日期和時間 |WEEK(date) | 返回日期date為一年中第幾周(0~53) |YEAR(date) | 返回日期date的年份(1000~9999)
流程函數
- CASE WHEN[test1] THEN [result1]...ELSE [default] END 如果testN是真,則返回resultN,否則返回default
- CASE [test] WHEN[val1] THEN [result]...ELSE [default] END 如果test和valN相等,則返回resultN,否則返回default
- IF(test,t,f) 如果test是真,返回t;否則返回 f
- IFNULL(arg1,arg2) 如果arg1不是空,返回arg1,否則返回arg2
來自: http://shanks.leanote.com/post/Mysql函數與運算符