公安網(wǎng)站建設(shè)公司網(wǎng)站與推廣
目錄
內(nèi)置函數(shù)
一、日期函數(shù)
二、字符串函數(shù)
三、數(shù)學(xué)函數(shù)
四、其他函數(shù)
內(nèi)置函數(shù)
一、日期函數(shù)
函數(shù)名稱 | 描述 |
---|---|
current_date() | 獲取當(dāng)前日期 |
current_time() | 獲取當(dāng)前時(shí)間 |
current_timestamp() | 獲取當(dāng)前時(shí)間戳 |
now() | 獲取當(dāng)前日期時(shí)間 |
date(datetime) | 獲取datetime參數(shù)的日期部分 |
date_add(date, interval d_value_type) | 在date中添加日期或時(shí)間,interval后的數(shù)值單位可以是:year、month、day、hour、minute、second |
date_sub(date, interval d_value_type) | 在date中減去日期或時(shí)間,interval后的數(shù)值單位可以是:year、month、day、hour、minute、second |
datediff(date1, date2) | 獲取兩個(gè)日期的差,單位是天 |
?current_date( )函數(shù):用于獲取當(dāng)前的日期
?current_time( )函數(shù):用于獲取當(dāng)前的時(shí)間
?current_timestamp( )函數(shù):用于獲取當(dāng)前的時(shí)間戳,以日期時(shí)間格式進(jìn)行顯示
?now( )函數(shù):用于獲取當(dāng)前的日期時(shí)間
?date(datetime)函數(shù):用于獲取當(dāng)前的日期時(shí)間
?date_add(date, interval d_value_type)函數(shù):用于在日期的基礎(chǔ)上添加日期或時(shí)間
如果在date_add函數(shù)中添加的日期/時(shí)間為負(fù)值,則相當(dāng)于在日期的基礎(chǔ)上減去日期/時(shí)間。如下:
date_sub(date, interval d_value_type)函數(shù):用于在日期的基礎(chǔ)上減去日期或時(shí)間
如果在date_sub函數(shù)中減去的日期/時(shí)間為負(fù)值,則相當(dāng)于在日期的基礎(chǔ)上添加日期/時(shí)間。如下:
?datediff(date1, date2)函數(shù):用于獲取兩個(gè)日期的差,單位是天
案例:
創(chuàng)建一個(gè)留言表,表中包含自增長(zhǎng)的主鍵id、昵稱、留言內(nèi)容和留言時(shí)間。如下:
然后向表msg1中插入一些數(shù)據(jù),插入時(shí)直接通過now函數(shù)指明評(píng)論時(shí)間。如下:
在顯示評(píng)論信息時(shí),如果只想顯示評(píng)論的日期而不顯示評(píng)論的時(shí)間,可以在查詢sendtime字段時(shí),通過date函數(shù)截取sendtime的日期部分進(jìn)行顯示。如下:
我們接下來(lái)不定時(shí)向表中插入一些數(shù)據(jù):
在顯示評(píng)論信息時(shí),如果要查詢10分鐘內(nèi)發(fā)布的評(píng)論信息,實(shí)際就是要篩選出評(píng)論時(shí)間加上10分鐘后大于當(dāng)前時(shí)間的評(píng)論,這時(shí)需要同時(shí)借助date_add和now函數(shù)。如下:
二、字符串函數(shù)
函數(shù)名稱 | 說明 |
---|---|
charset(str) | 獲取字符串使用的字符集 |
concat(str1, str2 [, …]) | 獲取連接后的字符串 |
instr(str, substr) | 獲取substr在str中首次出現(xiàn)的位置,沒有出現(xiàn)返回0 |
ucase(str) | 獲取轉(zhuǎn)換成大寫后的字符串 |
lcase(str) | 獲取轉(zhuǎn)換成小寫后的字符串 |
left(str, length) | 從字符串的左邊開始,向后截取length個(gè)字符 |
length(str) | 獲取字符串占用的字節(jié)數(shù) |
replace(str, search_str, replace_str) | 將字符串中的search_str替換成replace_str |
strcmp(str1, str2) | 逐字符比較兩個(gè)字符串的大小 |
substring(str, position [, length]) | 從字符串的position開始,向后截取length個(gè)字符 |
ltrim(str)、rtrim(str)、trim(str) | 去除字符串的前空格、后空格、前后空格 |
?charset函數(shù):
現(xiàn)有如下員工表,要求獲取員工表中ename列使用的字符集。如下:?
在查詢員工表中的信息時(shí),使用charset函數(shù)獲取ename列使用的字符集即可。如下:
concat函數(shù)
有如下成績(jī)表,要求以“XXX的語(yǔ)文是XX分,數(shù)學(xué)是XX分,英語(yǔ)是XX分”的格式顯示成績(jī)表中的信息。如下:?
在查詢成績(jī)表中的信息時(shí),使用concat函數(shù)按要求進(jìn)行字符串連接即可。如下:
instr函數(shù):用于獲取一個(gè)字符串在另一個(gè)字符串中首次出現(xiàn)的位置,如果沒有出現(xiàn)則返回0
ucase函數(shù):用于獲取轉(zhuǎn)換成大寫后的字符串
lcase函數(shù):用于獲取轉(zhuǎn)換成小寫后的字符串
left函數(shù):用于從字符串的左邊開始,向后截取指定個(gè)數(shù)的字符
length函數(shù):用于獲取字符串占用的字節(jié)數(shù)
說明一下:?對(duì)于多字節(jié)字符來(lái)說,不同編碼中一個(gè)字符所占的字節(jié)個(gè)數(shù)是不同的,比如utf8中一個(gè)字符占用3個(gè)字節(jié),而gbk中一個(gè)字符占用2個(gè)字節(jié)。?
replace函數(shù):用于將字符串中的指定子字符串替換成另一個(gè)字符串,例如將員工表中所有名字中的“S”替換成“上海”。
strcmp函數(shù):用于逐字符按照ASCII碼比較兩個(gè)字符串的大小,兩個(gè)字符串大小相等返回0,前者大返回1,后者大返回-1(比較時(shí)不區(qū)分大小寫)
substring函數(shù):用于從字符串的指定位置開始,向后截取指定個(gè)數(shù)的字符。
使用substring函數(shù)時(shí),如果沒有指定要截取的字符個(gè)數(shù),則默認(rèn)從指定位置開始截取到最后。如下:
ltrim、rtrim和trim函數(shù)
- trim函數(shù)用于去除字符串的前后空格。
- ltrim和rtrim函數(shù)分別用于去除字符串的前空格和后空格。?
三、數(shù)學(xué)函數(shù)
函數(shù)名稱 | 說明 |
---|---|
abs(number) | 絕對(duì)值函數(shù) |
bin(decimal_number) | 十進(jìn)制轉(zhuǎn)換成二進(jìn)制 |
hex(decimal_number) | 十進(jìn)制轉(zhuǎn)換成十六進(jìn)制 |
conv(number, from_base, to_base) | from_base進(jìn)制轉(zhuǎn)換成to_base進(jìn)制 |
ceiling(number) | 向上取整 |
floor(number) | 向下取整 |
format(number, n) | 格式化,保留n位小數(shù)(四舍五入) |
rand() | 生成隨機(jī)浮點(diǎn)數(shù),范圍 [0.0, 1.0) |
mod(number, denominator) | 求余 |
?abs函數(shù):用于獲取一個(gè)數(shù)的絕對(duì)值
bin函數(shù):用于將一個(gè)十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制
hex函數(shù):用于將一個(gè)十進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制
conv函數(shù):用于將一個(gè)數(shù)從一個(gè)進(jìn)制轉(zhuǎn)換成另一個(gè)進(jìn)制
ceiling函數(shù):用于對(duì)一個(gè)數(shù)進(jìn)行向上取整
floor函數(shù):用于對(duì)一個(gè)數(shù)進(jìn)行向下取整
format函數(shù):用于對(duì)數(shù)值進(jìn)行格式化,以四舍五入的方式保留指定位數(shù)的小數(shù)?
rand函數(shù):用于生成0.0到1.0的隨機(jī)浮點(diǎn)數(shù)?
如果想要生成0到100的隨機(jī)數(shù),可以用生成的隨機(jī)浮點(diǎn)數(shù)乘以100,然后再以某種取整方式進(jìn)行取整。如下:
mod函數(shù):用于對(duì)數(shù)值進(jìn)行求余運(yùn)算?
四、其他函數(shù)
user函數(shù):用于獲取MySQL連接的當(dāng)前用戶名和主機(jī)名。
md5函數(shù):用于對(duì)一個(gè)字符串進(jìn)行md5摘要,摘要后得到一個(gè)32位字符串。?
補(bǔ)充:
- 一般情況下公司內(nèi)部數(shù)據(jù)庫(kù)不會(huì)存儲(chǔ)用戶的明文密碼,而會(huì)將用戶密碼形成摘要后存儲(chǔ)對(duì)應(yīng)的摘要,當(dāng)用戶登錄賬號(hào)時(shí),將用戶輸入的的密碼形成摘要后與數(shù)據(jù)庫(kù)中存儲(chǔ)的摘要做對(duì)比,如果對(duì)比成功則允許登錄。
- 這么做的好處主要有兩個(gè),第一個(gè)好處就是公司內(nèi)部數(shù)據(jù)庫(kù)中存儲(chǔ)的不是用戶的明文信息,就算用戶信息泄露了也不會(huì)產(chǎn)生太大影響,第二個(gè)好處就是形成的摘要是定長(zhǎng)的,這樣有利于數(shù)據(jù)庫(kù)表結(jié)構(gòu)的設(shè)計(jì)。
database函數(shù):用于顯示當(dāng)前正在使用的數(shù)據(jù)庫(kù)。?
password函數(shù):用于對(duì)用戶數(shù)據(jù)進(jìn)行加密。?
ifnull函數(shù):接受兩個(gè)參數(shù),如果第一個(gè)參數(shù)不為null則返回第一個(gè)參數(shù)值,否則返回第二個(gè)參數(shù)值。?
?