一、數學函式
數學函式主要用於處理數字,包括整型、浮點數等。
abs(x)
返回x的絕對值
select abs(-1) -- 返回1
ceil(x),ceiling(x)
返回大於或等於x的最小整數
select ceil(1.5) -- 返回2
floor(x)
返回小於或等於x的最大整數
select floor(1.5) -- 返回1
rand()
返回0->1的隨機數
select rand() --0.93099315644334
rand(x)
返回0->1的隨機數,x值相同時返回的隨機數相同
select rand(2) --1.5865798029924
pi()
返回圓周率(3.141593)
select pi() --3.141593
truncate(x,y)
返回數值x保留到小數點後y位的值(與round最大的區別是不會進行四捨五入)
select truncate(1.23456,3) -- 1.234
round(x,y)
保留x小數點後y位的值,但截斷時要進行四捨五入
select round(1.23456,3) -- 1.235
pow(x,y).power(x,y)
返回x的y次方
select pow(2,3) -- 8
sqrt(x)
返回x的平方根
select sqrt(25) -- 5
exp(x)
返回e的x次方
select exp(3) -- 20.085536923188
mod(x,y)
返回x除以y以後的餘數
select mod(5,2) -- 1
二、字串函式
字串函式是mysql中最常用的一類函式,字串函式主要用於處理表中的字串。
函式 說明
char_length(s)
返回字串s的字元數
select char_length('你好123') -- 5
concat(s1,s2,...)
將字串s1,s2等多個字串合併為乙個字串
select concat('12','34') -- 1234
concat_ws(x,s1,s2,...)
同concat(s1,s2,...)函式,但是每個字串直接要加上x
select concat_ws('@','12','34') -- 12@34
insert(s1,x,len,s2)
將字串s2替換s1的x位置開始長度為len的字串
select insert('12345',1,3,'abc') -- abc45
upper(s),ucaase(s)
將字串s的所有字母變成大寫字母
select upper('abc') -- abc
lower(s),lcase(s)
將字串s的所有字母變成小寫字母
select lower('abc') -- abc
left(s,n)
返回字串s的前n個字元
select left('abcde',2) -- ab
right(s,n)
返回字串s的後n個字元
select right('abcde',2) -- de
ltrim(s) 去掉字串s開始處的空格
rtrim(s) 去掉字串s結尾處的空格
trim(s) 去掉字串s開始和結尾處的空格
select trim('@' from '@@abc@@') -- abc
repeat(s,n)
將字串s重複n次
select repeat('ab',3) -- ababab
space(n) 返回n個空格
replace(s,s1,s2)
將字串s2替代字串s中的字串s1
select replace('abca','a','x') --xbcx
strcmp(s1,s2) 比較字串s1和s2
substring(s,n,len) 獲取從字串s中的第n個位置開始長度為len的字串
locate(s1,s),position(s1 in s)
從字串s中獲取s1的開始位置
select locate('b', 'abc') -- 2
reverse(s)
將字串s的順序反過來
select reverse('abc') -- cba
field(s,s1,s2...)
返回第乙個與字串s匹配的字串位置
select field('c','a','b','c') -- 3
三、日期時間函式
mysql的日期和時間函式主要用於處理日期時間。
函式 說明
curdate(),current_date()
返回當前日期
select curdate()
->2014-12-17
curtime(),current_time
返回當前時間
select curtime()
->15:59:02
now(),current_timestamp(),localtime(),
sysdate(),localtimestamp()
返回當前日期和時間
select now()
->2014-12-17 15:59:02
year(d),
month(d)
day(d)
返回日期d中的月份值,1->12
select month('2011-11-11 11:11:11')
->11
monthname(d)
返回日期當中的月份名稱,如janyary
select monthname('2011-11-11 11:11:11')
->november
dayname(d)
返回日期d是星期幾,如monday,tuesday
select dayname('2011-11-11 11:11:11')
->friday
dayofweek(d)
日期d今天是星期幾,1星期日,2星期一
select dayofweek('2011-11-11 11:11:11')
->6
weekday(d)
日期d今天是星期幾,
0表示星期一,1表示星期二
week(d),weekofyear(d)
計算日期d是本年的第幾個星期,範圍是0->53
select week('2011-11-11 11:11:11')
->45
dayofyear(d)
計算日期d是本年的第幾天
select dayofyear('2011-11-11 11:11:11')
->315
dayofmonth(d)
計算日期d是本月的第幾天
select dayofmonth('2011-11-11 11:11:11')
->11
quarter(d)
返回日期d是第幾季節,返回1->4
select quarter('2011-11-11 11:11:11')
->4
hour(t)
返回t中的小時值
select hour('1:2:3')
->1
minute(t)
返回t中的分鐘值
select minute('1:2:3')
->2
second(t)
返回t中的秒鐘值
select second('1:2:3')
->3
四、系統資訊函式
系統資訊函式用來查詢mysql資料庫的系統資訊。
函式 作用
version()
返回資料庫的版本號
select version()
->5.0.67-community-nt
connection_id() 返回伺服器的連線數
database()、schema 返回當前資料庫名
user()、system_user()
返回當前使用者
五、加密函式
加密函式是mysql用來對資料進行加密的函式。
1、password(str)
該函式可以對字串str進行加密,一般情況下,password(str)用於給使用者的密碼加密。
select password('123')
->*23ae809ddacaf96af0fd78ed04b6a265e05aa257
2、md5
md5(str)函式可以對字串str進行雜湊,可以用於一些普通的不需要解密的資料加密。
select md5('123')
->202cb962ac59075b964b07152d234b70
3、encode(str,pswd_str)與decode(crypt_str,pswd_str)
encode函式可以使用加密密碼pswd_str來加密字串str,加密結果是二進位制數,需要使用blob型別的字段儲存。該函式與decode是一對,需要同樣的密碼才能夠解密。
select encode('123','xxoo')
->;vx
select decode(';vx','xxoo')
->123
insert into login values('lch','alvin',encode('123','xxoo'),'50')
select name,decode(password,'xxoo') from login where username='lch'
並查集詳解 例題合集
擒賊先擒王 解密犯罪團夥 沒錯,就是他們,為了下層勞動階級的利益開始擾亂朝廷治安了。雖然他們是一家人,但是這些好漢們分成了許多隊伍分開出動,我們需要做的是確定他們分成了多少個隊伍。我們先來了解一下並查集 並查集,並查集是一種樹形結構,又叫 不相交集合 保持了一組不相交的動態集合,每個集合通過乙個代表...
Mysql常用函式合集
1.字元函式select length abc 結果 3 select length 張三 結果 6select concat a b c 結果 abcselect concat ws a b c 結果 a,b,cselect upper abc 結果 abcselect lower abc 結果 ...
mysql 主外來鍵例題
內部資料是錯的,主要為了mysql的主外來鍵設定方法 建立學生表 create table student sno varchar 20 not null comment 學號 sname varchar 20 not null comment 學生姓名 s varchar 20 not null ...