您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關MySQL中其他函數的簡介,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
其他函數
(1)格式化函數format(x,n)
(2)不同進制的數字進行轉換的函數
(3)IP地址與數字相互轉換的函數
(4)加鎖函數與解鎖函數
(5)重復執行指定操作的函數
(6)改變字符集的函數
(7)改變數據類型的函數
format(x,n)
將數字x格式化,并以四舍五入的方式保留小數點后n位,結果以字符串的形式返回。若n為0,則返回結果函數不含小數部分。
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)
函數進行不同進制數之間的轉換,若有一個參數為null,則返回值為null。
【例】使用conv函數在不同進制數值之間轉換,SQL語句如下:
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)
進制 | 說明 |
---|---|
二進制 | 采用0和1兩個數字來表示的數,以2為基數,逢二進一 |
八進制 | 采用0-7八個數字,逢八進一,以數字0開頭 |
十進制 | 采用0-9共十個數字表示,逢十進一 |
十六進制 | 由0-9,A-F組成,與十進制的對應關系是:0-9對應0-9,A-F對應10-15,十六進制數以0x開頭 |
1.inet_aton()
inet_aton(expr)給出一個作為字符串的網絡地址的點地址表示,返回一個代表該地址數值的整數,地址可以是4bit或8bit地址。
【例】使用inet_aton()函數將字符串網絡點地址轉換為數值網絡地址,SQL語句如下:
產生的數字按照網絡字節順序計算,此例子計算方法為: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)
給定一個數字網絡地址(4bit或8bit),返回作為字符串的該地址的點地址表示。
inet_ntoa函數與inet_aton互為反函數。
【例】使用iner_ntoa函數將數值網絡地址轉換為字符串網絡點地址,SQL語句如下:
mysql> select inet_ntoa(3520061480);+-----------------------+| inet_ntoa(3520061480) |+-----------------------+| 209.207.224.40 |+-----------------------+1 row in set (0.00 sec)
1.get_lock(str,timeout)
設法使用字符串str給定的名字得到一個鎖,超時為timeout秒。若成功得到鎖,則返回1;若操作超時返回0;若發生錯誤,返回null。
假如有一個用get_lock()得到的鎖,當執行release_lock()或鏈接斷開(正常或非正常)時,這個鎖就會解除。
2.release_lock(str)
解開被get_lock()獲取的,用字符串str所命名的鎖。若鎖被解開,則返回1;若該線程尚未創建鎖,則返回0(此時鎖沒有被解開);若命名的鎖不存在,則返回null。若該鎖從未被get_lock()的調用獲取,或鎖已經被提前解開,則該鎖不存在。
3.is_free_lock(str)
檢查名為str的鎖是否可以使用(沒有被封鎖)。若鎖可以使用,則返回1(沒有人在使用這個鎖);若這個鎖正在被使用,則返回0;出現錯誤,則返回null(諸如不正確的參數)。
4.is_used_lock(str)
檢查名為str的鎖是否正在被使用(被封鎖)。若被封鎖,則返回使用該鎖的客戶端的連接標識符(connectionID);否則,返回null。
【例】使用加鎖、解鎖函數,SQL語句如下:
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)
函數重復執行表達式(expr)count次。它可以用于計算MySQL處理表達式的速度。結果值通常為0,(0只是表示處理過程很快,并不是沒有花時間)。另一個作用是它可以在MySQL客戶端內部報告語句執行的時間。
【例】使用benchmark重復執行指定函數
可以看到下面語句執行500000次的時間為0.38sec,明顯比執行一次的時間提高了。
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報告的時間是客戶端經過的時間,而不是在服務器端的CPU時間,每次執行后報告的時間并不一定是相同的。
convert(…using…)
帶有using的convert()函數被用來在不同的字符集之間轉化數據。
【例】使用convert()
函數改變字符串的默認字符集,SQL語句如下;
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)
默認為gbk字符集,通過convert將字符串"strng"的默認字符集改為latin1。
- case(x,as type)
和convert(x,type)
函數將一個類型的值轉換為另一個類型的值,可以轉換的type值有binary、char(n)、date、time、datetime、decimal、signed、unsigned。
【例】使用case和convert函數進行數據類型的轉換,SQL語句如下:
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))將整數數據類型100轉換為帶有兩個顯示寬度的字符串類型,結果為“10”;convert(‘2010-08-20 00:32:01’)將datetime類型的值轉換為time類型,結果為00:32:01。
關于“MySQL中其他函數的簡介”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。