1. 程式人生 > 資料庫 >mysql各類函式彙總整理全集

mysql各類函式彙總整理全集

1. 數學函式

 

Mysql數學函式
函式 作用
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減去一個時間段後日期

更多的學習內容 點我學​​​​​​​

        

MYsql日期間隔型別
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.系統資訊函式

MYsql系統資訊函式
  函式 作用
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型別