1.數學函數 用來處理數值數據方面的運算,主要的數學函數有:絕對值函數,三角函數,對數函數,隨機函數。使用數學函數過程中,如果有錯誤產生,該函數會返回null值。 數學函數 功能介紹 組合鍵 abs(x) 返回x的絕對值 整數本身 pi() 返回圓周率 返回pa的值,預設顯示6位 sqrt(x) 返 ...
1.數學函數
用來處理數值數據方面的運算,主要的數學函數有:絕對值函數,三角函數,對數函數,隨機函數。使用數學函數過程中,如果有錯誤產生,該函數會返回null值。
數學函數 |
功能介紹 |
組合鍵 |
abs(x) |
返回x的絕對值 |
整數本身 |
pi() |
返回圓周率 |
返回pa的值,預設顯示6位 |
sqrt(x) |
返回非負數x的二次方根 |
如為負數,返回null |
mod(x,y) |
返回x/y的模,即相除餘數 |
|
ceil(x)和ceiling(x) |
先這兩個函數功能相同,返回不小於x的最小整數值 |
註意正負數及小數和整數的區別 |
floor(x) |
返回不大於x的最大整數值 |
|
rand() |
返回一個隨機浮點值v,0<=v<=1 |
|
rand(x) |
返回一個隨機浮點值v,0<=v<=1,參數x為整數,被用作種子值,用來產生重覆序列 |
|
round(x) |
返回最接近參數x的整數,對x進行四捨五入 |
此函數返回值為整數 |
round(x,y) |
返回最接近參數x的值,此值保留到小數點後面y位 |
如果參數取負值,則將小數點保留左邊y位 |
truncate(x,y) |
返回截去小數點後y位的數值x |
|
sign(x) |
返回參數x的符號 |
x值為負,返回-1;0 為0 ;正,返回1. |
pow(x,y) |
返回x的y次乘方的結果值 |
|
exp(x) |
返回e的x次方後的值 |
|
log(x) |
返回x的自然對數,x相對於基數e的對數 |
|
log10(x) |
返回x的基礎為10的對數 |
|
radians |
返回參數x由角轉化為弧度的值 |
|
degrees(x) |
返回參數x由弧度轉化為角度的值 |
|
sin(x) |
返回參數x的正玄值 |
|
asin(x) |
返回參數x的反正玄 |
|
cos(x) |
返回參數x的餘弦值 |
|
acos |
|
|
tan(x) |
|
|
atan(x) |
|
|
cot(x) |
返回參數x的餘切值 |
例:mysql> select mod(25,6),mod(9,3); +-----------+----------+ | mod(25,6) | mod(9,3) | +-----------+----------+ | 1 | 0 | +-----------+----------+ 1 row in set (0.00 sec)
2.字元串函數
處理字元串數據,字元串函數主要有:計算字元串長度函數、字元串合併函數、字元串轉換函數、字元串比較函數、查找指定字元串位置函數。
ASCII(char) 返回字元的ASCII碼值
BIT_LENGTH(str) 返回字元串的比特長度
CONCAT(s1,s2…,sn) 將s1,s2…,sn連接成字元串
CONCAT_WS(sep,s1,s2…,sn) 將s1,s2…,sn連接成字元串,並用sep字元間隔
INSERT(str,x,y,instr) 將字元串str從第x位置開始,y個字元長的子串替換為字元串instr,返回結果
FIND_IN_SET(str,list) 分析逗號分隔的list列表,如果發現str,返回str在list中的位置
LCASE(str)或LOWER(str) 返回將字元串str中所有字元改變為小寫後的結果
LEFT(str,x) 返回字元串str中最左邊的x個字元
LENGTH(s) 返回字元串str中的字元數
LTRIM(str) 從字元串str中切掉開頭的空格
POSITION(substr,str) 返回子串substr在字元串str中第一次出現的位置
QUOTE(str) 用反斜杠轉義str中的單引號
REPEAT(str,srchstr,rplcstr)返回字元串str重覆x次的結果
REVERSE(str) 返回顛倒字元串str的結果
RIGHT(str,x) 返回字元串str中最右邊的x個字元
RTRIM(str) 返回字元串str尾部的空格
STRCMP(s1,s2) 比較字元串s1和s2
TRIM(str) 去除字元串首部和尾部的所有空格
UCASE(str)或UPPER(str) 返回將字元串str中所有字元轉變為大寫後的結果
例:mysql> select length('test'),length('測試'); +----------------+------------------+ | length('test') | length('測試') | +----------------+------------------+ | 4 | 6 | +----------------+------------------+
3.日期和時間函數
主要處理日期和時間值,一般的日期函數除使用date類型的參數外,也可以使用datetime或timestamp類型的參數。
(1)日期時間函數
時間轉化秒函數:time_to_sec MySQL> select time_to_sec('01:01:01'); +-------------------------+ | time_to_sec('01:01:01') | +-------------------------+ | 3661 | +-------------------------+ 1 row in set (0.00 sec) 秒轉化時間函數:sec_to_time mysql> select sec_to_time(3661); +-------------------+ | sec_to_time(3661) | +-------------------+ | 01:01:01 | +-------------------+ 1 row in set (0.00 sec) 日期轉為天數函數:to_days mysql> select to_days('0000-00-00'); +-----------------------+ | to_days('0000-00-00') | +-----------------------+ | NULL | +-----------------------+ 1 row in set, 1 warning (0.01 sec) mysql> select to_days('0001-01-01'); +-----------------------+ | to_days('0001-01-01') | +-----------------------+ | 366 | +-----------------------+ 1 row in set (0.00 sec) 天數轉化日期函數:from_days mysql> select from_days(0); +--------------+ | from_days(0) | +--------------+ | 0000-00-00 | +--------------+ 1 row in set (0.00 sec) mysql> select from_days(366); +----------------+ | from_days(366) | +----------------+ | 0001-01-01 | +----------------+ 1 row in set (0.00 sec) 字元串轉換為日期函數:str_to_date mysql> select str_to_date('2013-01-01 01:21:01','%Y-%m-%d %H:%i:%s'); +--------------------------------------------------------+ | str_to_date('2013-01-01 01:21:01','%Y-%m-%d %H:%i:%s') | +--------------------------------------------------------+ | 2013-01-01 01:21:01 | +--------------------------------------------------------+ 1 row in set (0.00 sec) 日期轉換為字元串函數:date_format mysql> select date_format('2013-01-01 01:21:01','%Y%m%d %H%i%s'); +----------------------------------------------------+ | date_format('2013-01-01 01:21:01','%Y%m%d %H%i%s') | +----------------------------------------------------+ | 20130101 012101 | +----------------------------------------------------+ 1 row in set (0.00 sec) 時間轉換為字元串函數:time_format mysql> select time_format('01:21:01','%H%i%s'); +----------------------------------+ | time_format('01:21:01','%H%i%s') | +----------------------------------+ | 012101 | +----------------------------------+ 1 row in set (0.00 sec)
說明:
日期時間格式參數如下:
%M 月名字(January……December)
%W 星期名字(Sunday……Saturday)
%D 有英語首碼的月份的日期(1st, 2nd, 3rd, 等等。)
%Y 年, 數字, 4 位
%y 年, 數字, 2 位
%a 縮寫的星期名字(Sun……Sat)
%d 月份中的天數, 數字(00……31)
%e 月份中的天數, 數字(0……31)
%m 月, 數字(01……12)
%c 月, 數字(1……12)
%b 縮寫的月份名字(Jan……Dec)
%j 一年中的天數(001……366)
%H 小時(00……23)
%k 小時(0……23)
%h 小時(01……12)
%I 小時(01……12)
%l 小時(1……12)
%i 分鐘, 數字(00……59)
%r 時間,12 小時(hh:mm:ss [AP]M)
%T 時間,24 小時(hh:mm:ss)
%S 秒(00……59)
%s 秒(00……59)
%p AM或PM
%w 一個星期中的天數(0=Sunday ……6=Saturday )
%U 星期(0……52), 這裡星期天是星期的第一天
%u 星期(0……52), 這裡星期一是星期的第一天
%% 一個文字“%”。
提取表達式的日期部分 mysql> select date(now()); +-------------+ | date(now()) | +-------------+ | 2013-05-16 | +-------------+ 1 row in set (0.00 sec) 返回表達式的星期索引(0=星期一,1=星期二, ……6= 星期天)。 mysql> select weekday(now()); +----------------+ | weekday(now()) | +----------------+ | 3 | +----------------+ 1 row in set (0.00 sec) 返回表達式是一年的第幾周 mysql> select week(now()); +-------------+ | week(now()) | +-------------+ | 19 | +-------------+ 1 row in set (0.00 sec) WEEK()允許指定星期是否開始於星期天或星期一。如果第二個參數是0,星期從星期天開始,如果第二個參數是1, 從星期一開始,如下所示: mysql> select week(now(),0); +---------------+ | week(now(),0) | +---------------+ | 19 | +---------------+ 1 row in set (0.00 sec) mysql> select week(now(),1); +---------------+ | week(now(),1) | +---------------+ | 20 | +---------------+ 1 row in set (0.00 sec) 返回表達式一年中季度 mysql> select quarter(now()); +----------------+ | quarter(now()) | +----------------+ | 2 | +----------------+ 1 row in set (0.00 sec) 返回表達式一周的第一天 mysql> select dayofweek(now()); +------------------+ | dayofweek(now()) | +------------------+ | 5 | +------------------+ 1 row in set (0.00 sec) 返回表達式一個月的第幾天 mysql> select dayofmonth(now()); +-------------------+ | dayofmonth(now()) | +-------------------+ | 16 | +-------------------+ 1 row in set (0.00 sec) 返回表達式一年的第幾天 mysql> select dayofyear(now()); +------------------+ | dayofyear(now()) | +------------------+ | 136 | +------------------+ 1 row in set (0.00 sec) 返回表達式的星期名字 mysql> select dayname(now()); +----------------+ | dayname(now()) | +----------------+ | Thursday | +----------------+ 1 row in set (0.00 sec) 返回表達式月份的名字 mysql> select monthname(now()); +------------------+ | monthname(now()) | +------------------+ | May | +------------------+ 1 row in set (0.00 sec) mysql> 提取表達式的年份 mysql> select year(now()); +-------------+ | year(now()) | +-------------+ | 2013 | +-------------+ 1 row in set (0.00 sec) 提取表達式的月份 mysql> select month(now()); +--------------+ | month(now()) | +--------------+ | 5 | +--------------+ 1 row in set (0.01 sec) 提取表達式的天數 mysql> select day(now()); +------------+ | day(now()) | +------------+ | 16 | +------------+ 1 row in set (0.00 sec) 提取表達式的小時 mysql> select hour(now()); +-------------+ | hour(now()) | +-------------+ | 16 | +-------------+ 1 row in set (0.00 sec) 提取表達式的分鐘 mysql> select minute(now()); +---------------+ | minute(now()) | +---------------+ | 31 | +---------------+ 1 row in set (0.00 sec) 提取表達式的秒數 mysql> select second(now()); +---------------+ | second(now()) | +---------------+ | 34 | +---------------+ 1 row in set (0.00 sec)
將當前日期按照'YYYY-MM-DD' 或YYYYMMDD 格式的值返回,具體格式根據函數用在字元串或是數字語境中而定。 mysql> select curdate(); +------------+ | curdate() | +------------+ | 2013-05-16 | +------------+ 1 row in set (0.00 sec) mysql> select curdate()+1; +-------------+ | curdate()+1 | +-------------+ | 20130517 | +-------------+ 1 row in set (0.00 sec) 將當前時間以'HH:MM:SS'或 HHMMSS的格式返回,具體格式根據函數用在字元串或是數字語境中而定。 mysql> select curtime(); +-----------+ | curtime() | +-----------+ | 16:43:10 | +-----------+ 1 row in set (0.00 sec) mysql> select curtime()+1; +---------------+ | curtime()+1 | +---------------+ | 164420.000000 | +---------------+ 1 row in set (0.00 sec) 獲取當前日期時間:sysdate(),now() mysql> select sysdate(),sleep(2),sysdate(); +---------------------+----------+---------------------+ | sysdate() | sleep(2) | sysdate() | +---------------------+----------+---------------------+ | 2013-05-16 17:16:04 | 0 | 2013-05-16 17:16:06 | +---------------------+----------+---------------------+ 1 row in set (2.00 sec) mysql> select now(),sleep(2),now(); +---------------------+----------+---------------------+ | now() | sleep(2) | now() | +---------------------+----------+---------------------+ | 2013-05-16 17:16:18