mysql各類函式彙總整理全集
1. 數學函式
函式 | 作用 | 例 |
---|---|---|
abs(x) | 絕對值 | abs(-0.5)=0.5 |
ceil(x),ceiling(x) | 大於或等於x的最小整 數 | ceil(0.5)=1,ceiling(-0.5)=0 |
floor(x) | 小於或等於x的最大整數 | floor(0.5)=0,floor(-0.5)=-1 |
rand() | 0-1的隨機數 | |
rand(x) | 0-1的隨機數,x值相同時返回的隨機數相同 | |
sign(x) | x的符號(-1,1) | sign(-0.5)=- 1,sign(0)=0,sign(0.5)=1 |
pi() | 圓周率(3.141593) | pi()=3.141593 |
truncate(x,y) | x保留到小數點後y位的值 | truncate(2.55,1)=2.5 |
round(x) | 離x最近的整數 | round(2.5)=3,round(2.2)=2 |
round(x,y) | x小數點後y位的值,(四捨五入後) | round(2.55,1)=2.6 |
pow(x,y),power(x,y) | x的y次方 | power(3,2)=pow(3,2)=9 |
sqrt(x) | x的平方根 | sqrt(16)=4 |
exp(x) | e的x次方 | exp(2)=7.38905609893065 |
mod(x,y) | x除以y以後的餘數 | mod(5,2)=1 |
log(x) | 自然對數(以e為底) | log(7.38905609893065)=2 |
log10(x) | 以10為底的對數 | log10(100)=2 |
radians(x) | 角度轉換為弧度 | radians(180)=3.141592653589793 |
degrees(x) | 弧度轉換為角度 | degrees(pi())=180 |
sin(x) | 正弦值 | sin(pi()/2)=1 |
asin(x) | 反正弦值 | asin(1)=1.5707963267948966 |
cos(x) | 餘弦值 | cos(0)=1 |
acos(x) | 反餘弦值 | acos(1)=0 |
tan(x) | 正切值 | tan(pi()/4)=0.9999999999999999 |
atan(x),atan2(x,y) | 反正切值 | atan(1)=atan2(1)=0.7853981633974483 |
cot(x) | 餘切值 | cot(1)=0.6420926159343306 |
2.字串函式
合併字串函式 concat_ws(x,s1,s2,…)
!! 各字串用引數 x 隔開
填充字串函式 lpad(s1,len,s2),rpad(s1,s2)
!! lpad(s1,s2)函式把字串 s2 填充到 s1 的開始處,使字串長度達到 len;
!! rpad(s1,s2)函式把字串 s2 填充到 s1 的結尾處,使字串長度達到 len;
3.日期和時間函式
3.1獲取當前日期:curdate(),current_date()
獲取當前時間:curtime(),current_time()
獲取當前日期和時間:now(),current_timestamp(),localtime(),sysdate(),localtimestamp()
3.2unix時間戳函式
以unix時間戳形式返回當前時間:unix_timestamp()
將時間 d 以unix時間戳形式返回:unix_timestamp(d)
把unix時間戳的時間轉換為普通格式的時間:from_unixtime(d)
3.3返回utc日期:utc_date()
返回utc時間:utc_time() !! utc:Universal Coordinated Time,國際協調時間
3.4獲取月份:month(d),monthname(d)
3.5獲取星期:dayname(d) :Monday,…
dayofweek(d) :1(週日),…
weekday(d) :0(週一),…
3.6獲取星期數:week(d),weekofyear(d) :d是本年第幾周
3.7獲取天數:dayofyear(d) :本年第幾天
dayofmonth(d) :本月第幾天
3.8返回日期d中年份值:year(d)
返回日期d是本年第幾季度:quarter(d)
返回時間t中小時值:hour(t)
返回時間t中分鐘值:minute(t)
返回時間t中秒鐘值:second(t)
3.9返回日期的指定值:extract(type from d)
type:: year :年份
month:月份
day:幾號
hour:小時
minute:分鐘
second:秒
3.10時間和秒鐘轉換
time_to_sec(t)
sec_to_time(s)
3.11計算日期和時間
(1) to_days(d) :日期d與0000年1月1日的天數
from_days(n):從0000年1月1日開始 n 天后日期
datediff(d1,d2):日期d1和d2之間相隔的天數
(2) adddate(d,n) :起始日期 d 加上 n 天的日期
subdate(d,n) :起始日期 d 減去 n 天的日期
addtime(t,n) :起始時間 t 加上 n 秒的時間
subtime(t,n) :起始時間 t 減去 n 秒的時間
(3) adddate(d,interval expr type),date_add(d,interval expr type):起始日期d加上一個時間段後日期
subdate(d,interval expr type) :起始日期d減去一個時間段後日期
更多的學習內容 點我學
type | 含義 | expr形式(時間段長度) |
---|---|---|
year | 年 | yy |
month | 月 | mm |
day | 日 | dd |
hour | 時 | hh |
minute | 分 | mm |
second | 秒 | ss |
year_month | 年-月 | yy與mm間用任意符號隔開 |
day_hour | 日-時 | dd與hh間用任意符號隔開 |
day_minute | 日-分 | dd與mm間用任意符號隔開 |
day_second | 日-秒 | dd與ss間用任意符號隔開 |
hour_minute | 時-分 | hh與mm間用任意符號隔開 |
hour_second | 時-秒 | hh與ss間用任意符號隔開 |
minute_second | 分-秒 | mm與ss間用任意符號隔開 |
3.12將日期和時間格式化
date_format(d,f):按f格式要求顯示日期d
time_format(t,f):按f格式要求顯示時間t
get_format(type,s):根據字串s獲取type型別資料的顯示格式
!! date_format(d,get_format(type,s))
4.條件判斷函式
4.1 if(expr,v1,v2) :expr成立,返回v1,否則返回v2
例:select grade,if(grade>=60,'pass','fail') from student
4.2 ifnull(v1,v2) :若v1不為空,顯示v1值,否則顯示v2值
<pre name="code" class="sql"> 例:select grade,ifnull(grade,‘no grade') from student
4.3 case函式
4.3.1 case when expr1 then v1
[when expr2 then v2 …] [else vn]
end 欄位
4.3.2 case expr
when e1 then v1
[when e2 then v2 …] [else vn]
end 欄位
5.系統資訊函式
函式 | 作用 |
---|---|
version() | 資料庫版本號 |
connection_id() | 伺服器連線數 |
datebase(),schema() | 當前資料庫名 |
user(),system_user(),session_user() | 當前使用者 |
current_user(),current_user | 當前使用者 |
charset(str) | 字串str的字符集 |
collation(str) | 字串str的字元排列方式 |
last_insert_id() | 最近生成的auto_increment值 |
6.加密函式
6.1 password(str) :主要用來給使用者的密碼加密,此加密不可逆。
!! 不能將未加密的密碼直接儲存到Mysql的user表中
6.2 md5(str) :主要用於對普通的資料加密
6.3 encode(str,pswd_str) :使用字串pswd_str來加密字串str.加密的結果是一個二進位制數,必須使用blob型別的 欄位來儲存
6.4 decode(crypt_str,pswd_str) :使用字串pswd_str來為crypt_str解密。
例:
7.其他函式
7.1 format(x,n) :將數字x進行格式化,將x保留到小數點後n位(四捨五入)<=>round(x,y)
7.2 ascII(s) :返回字串s的第一個字元的ASCII碼
bin(x) :返回x的二進位制編碼
hex(x) :x的十六進位制編碼
oct(x) :x的八進位制編碼
conv(x,f1,f2) :將x從f1進位制數變成f2進位制數
7.3 inet_aton(ip) :將ip地址轉換為數字表示
inet_ntoa(n) :將數字n轉換成ip形式
7.4 get_lock(name,time) :定義一個名稱為nam、持續時間長度為time秒的鎖
release_lock(name) :解除名稱為name的鎖
is_free_lock(name) :是否使用名稱為name的鎖
7.5 benchmark(count,expr) :將表示式expr重複執行count次,然後返回執行時間
7.6 convert(s using cs) :將字串s的字符集變成cs
7.7 cast(x as type)和convert(x,type) :將x變成type型別