這篇文章將為大家詳細(xì)講解有關(guān)MySQL中其他函數(shù)的簡(jiǎn)介,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
專(zhuān)注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)黃平免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了成百上千企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
其他函數(shù)
(1)格式化函數(shù)format(x,n)
(2)不同進(jìn)制的數(shù)字進(jìn)行轉(zhuǎn)換的函數(shù)
(3)IP地址與數(shù)字相互轉(zhuǎn)換的函數(shù)
(4)加鎖函數(shù)與解鎖函數(shù)
(5)重復(fù)執(zhí)行指定操作的函數(shù)
(6)改變字符集的函數(shù)
(7)改變數(shù)據(jù)類(lèi)型的函數(shù)
format(x,n)
將數(shù)字x格式化,并以四舍五入的方式保留小數(shù)點(diǎn)后n位,結(jié)果以字符串的形式返回。若n為0,則返回結(jié)果函數(shù)不含小數(shù)部分。
mysql> select format(12332.123456,4),format(12332.1,4),format(12332.2,0);+------------------------+-------------------+-------------------+| format(12332.123456,4) | format(12332.1,4) | format(12332.2,0) |+------------------------+-------------------+-------------------+| 12,332.1235 | 12,332.1000 | 12,332 |+------------------------+-------------------+-------------------+1 row in set (0.00 sec)
conv(n,from_base,to_base)
函數(shù)進(jìn)行不同進(jìn)制數(shù)之間的轉(zhuǎn)換,若有一個(gè)參數(shù)為null,則返回值為null。
【例】使用conv函數(shù)在不同進(jìn)制數(shù)值之間轉(zhuǎn)換,SQL語(yǔ)句如下:
mysql> select conv('a',16,2), -> conv(15,10,2), -> conv(15,10,8), -> conv(15,10,16);+----------------+---------------+---------------+----------------+| conv('a',16,2) | conv(15,10,2) | conv(15,10,8) | conv(15,10,16) |+----------------+---------------+---------------+----------------+| 1010 | 1111 | 17 | F |+----------------+---------------+---------------+----------------+1 row in set (0.01 sec)
進(jìn)制 | 說(shuō)明 |
---|---|
二進(jìn)制 | 采用0和1兩個(gè)數(shù)字來(lái)表示的數(shù),以2為基數(shù),逢二進(jìn)一 |
八進(jìn)制 | 采用0-7八個(gè)數(shù)字,逢八進(jìn)一,以數(shù)字0開(kāi)頭 |
十進(jìn)制 | 采用0-9共十個(gè)數(shù)字表示,逢十進(jìn)一 |
十六進(jìn)制 | 由0-9,A-F組成,與十進(jìn)制的對(duì)應(yīng)關(guān)系是:0-9對(duì)應(yīng)0-9,A-F對(duì)應(yīng)10-15,十六進(jìn)制數(shù)以0x開(kāi)頭 |
1.inet_aton()
inet_aton(expr)給出一個(gè)作為字符串的網(wǎng)絡(luò)地址的點(diǎn)地址表示,返回一個(gè)代表該地址數(shù)值的整數(shù),地址可以是4bit或8bit地址。
【例】使用inet_aton()函數(shù)將字符串網(wǎng)絡(luò)點(diǎn)地址轉(zhuǎn)換為數(shù)值網(wǎng)絡(luò)地址,SQL語(yǔ)句如下:
產(chǎn)生的數(shù)字按照網(wǎng)絡(luò)字節(jié)順序計(jì)算,此例子計(jì)算方法為:209*256^3+207*256^2+224*256+40
。
mysql> select inet_aton('209.207.224.40');+-----------------------------+| inet_aton('209.207.224.40') |+-----------------------------+| 3520061480 |+-----------------------------+1 row in set (0.00 sec)
2.inet_ntoa()
inet_ntoa(expr)
給定一個(gè)數(shù)字網(wǎng)絡(luò)地址(4bit或8bit),返回作為字符串的該地址的點(diǎn)地址表示。
inet_ntoa函數(shù)與inet_aton互為反函數(shù)。
【例】使用iner_ntoa函數(shù)將數(shù)值網(wǎng)絡(luò)地址轉(zhuǎn)換為字符串網(wǎng)絡(luò)點(diǎn)地址,SQL語(yǔ)句如下:
mysql> select inet_ntoa(3520061480);+-----------------------+| inet_ntoa(3520061480) |+-----------------------+| 209.207.224.40 |+-----------------------+1 row in set (0.00 sec)
1.get_lock(str,timeout)
設(shè)法使用字符串str給定的名字得到一個(gè)鎖,超時(shí)為timeout秒。若成功得到鎖,則返回1;若操作超時(shí)返回0;若發(fā)生錯(cuò)誤,返回null。
假如有一個(gè)用get_lock()得到的鎖,當(dāng)執(zhí)行release_lock()或鏈接斷開(kāi)(正?;蚍钦?時(shí),這個(gè)鎖就會(huì)解除。
2.release_lock(str)
解開(kāi)被get_lock()獲取的,用字符串str所命名的鎖。若鎖被解開(kāi),則返回1;若該線(xiàn)程尚未創(chuàng)建鎖,則返回0(此時(shí)鎖沒(méi)有被解開(kāi));若命名的鎖不存在,則返回null。若該鎖從未被get_lock()的調(diào)用獲取,或鎖已經(jīng)被提前解開(kāi),則該鎖不存在。
3.is_free_lock(str)
檢查名為str的鎖是否可以使用(沒(méi)有被封鎖)。若鎖可以使用,則返回1(沒(méi)有人在使用這個(gè)鎖);若這個(gè)鎖正在被使用,則返回0;出現(xiàn)錯(cuò)誤,則返回null(諸如不正確的參數(shù))。
4.is_used_lock(str)
檢查名為str的鎖是否正在被使用(被封鎖)。若被封鎖,則返回使用該鎖的客戶(hù)端的連接標(biāo)識(shí)符(connectionID);否則,返回null。
【例】使用加鎖、解鎖函數(shù),SQL語(yǔ)句如下:
mysql> select get_lock('lock1',10) as getlock, -> is_used_lock('lock1') as isusedlock, -> is_free_lock('lock1') as isfreelock, -> release_lock('lock1') as releaselock;+---------+------------+------------+-------------+| getlock | isusedlock | isfreelock | releaselock |+---------+------------+------------+-------------+| 1 | 21 | 0 | 1 |+---------+------------+------------+-------------+1 row in set (0.05 sec)
- benchmark(count,expr)
函數(shù)重復(fù)執(zhí)行表達(dá)式(expr)count次。它可以用于計(jì)算MySQL處理表達(dá)式的速度。結(jié)果值通常為0,(0只是表示處理過(guò)程很快,并不是沒(méi)有花時(shí)間)。另一個(gè)作用是它可以在MySQL客戶(hù)端內(nèi)部報(bào)告語(yǔ)句執(zhí)行的時(shí)間。
【例】使用benchmark重復(fù)執(zhí)行指定函數(shù)
可以看到下面語(yǔ)句執(zhí)行500000次的時(shí)間為0.38sec,明顯比執(zhí)行一次的時(shí)間提高了。
mysql> select md5('Hudie');+----------------------------------+| md5('Hudie') |+----------------------------------+| 3fe2017e5cb984400c5271ef77a840f6 |+----------------------------------+1 row in set (0.00 sec)mysql> select benchmark(500000,md5('Hudie'));+--------------------------------+| benchmark(500000,md5('Hudie')) |+--------------------------------+| 0 |+--------------------------------+1 row in set (0.38 sec)
注意:
benchmark報(bào)告的時(shí)間是客戶(hù)端經(jīng)過(guò)的時(shí)間,而不是在服務(wù)器端的CPU時(shí)間,每次執(zhí)行后報(bào)告的時(shí)間并不一定是相同的。
convert(…using…)
帶有using的convert()函數(shù)被用來(lái)在不同的字符集之間轉(zhuǎn)化數(shù)據(jù)。
【例】使用convert()
函數(shù)改變字符串的默認(rèn)字符集,SQL語(yǔ)句如下;
mysql> select charset(' string '),charset( convert(' string ' using latin1 ) );+---------------------+----------------------------------------------+| charset(' string ') | charset( convert(' string ' using latin1 ) ) |+---------------------+----------------------------------------------+| gbk | latin1 |+---------------------+----------------------------------------------+1 row in set (0.00 sec)
默認(rèn)為gbk字符集,通過(guò)convert將字符串"strng"的默認(rèn)字符集改為latin1。
- case(x,as type)
和convert(x,type)
函數(shù)將一個(gè)類(lèi)型的值轉(zhuǎn)換為另一個(gè)類(lèi)型的值,可以轉(zhuǎn)換的type值有binary、char(n)、date、time、datetime、decimal、signed、unsigned。
【例】使用case和convert函數(shù)進(jìn)行數(shù)據(jù)類(lèi)型的轉(zhuǎn)換,SQL語(yǔ)句如下:
mysql> select cast(100 as char(2)),convert(' 2019-08-20 00:32:01 ',time);+----------------------+---------------------------------------+| cast(100 as char(2)) | convert(' 2019-08-20 00:32:01 ',time) |+----------------------+---------------------------------------+| 10 | 00:32:01 |+----------------------+---------------------------------------+1 row in set, 1 warning (0.05 sec)
可以看到,case(100 as char(2))將整數(shù)數(shù)據(jù)類(lèi)型100轉(zhuǎn)換為帶有兩個(gè)顯示寬度的字符串類(lèi)型,結(jié)果為“10”;convert(‘2010-08-20 00:32:01’)將datetime類(lèi)型的值轉(zhuǎn)換為time類(lèi)型,結(jié)果為00:32:01。
關(guān)于“MySQL中其他函數(shù)的簡(jiǎn)介”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。