中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL中其他函數的簡介

發布時間:2021-03-05 09:41:17 來源:億速云 閱讀:129 作者:小新 欄目:MySQL數據庫

這篇文章將為大家詳細講解有關MySQL中其他函數的簡介,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

其他函數

(1)格式化函數format(x,n)
(2)不同進制的數字進行轉換的函數
(3)IP地址與數字相互轉換的函數
(4)加鎖函數與解鎖函數
(5)重復執行指定操作的函數
(6)改變字符集的函數
(7)改變數據類型的函數

(1)、格式化函數format(x,n)
  • 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)

(2)、不同進制的數字進行轉換的函數
  • 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開頭

(3)、IP地址與數字相互轉換的函數

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)

(4)、加鎖函數與解鎖函數

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)

(5)、重復執行指定操作的函數

- 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時間,每次執行后報告的時間并不一定是相同的。


(6)、改變字符集的函數
  • 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。


(7)、改變數據類型的函數

- 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中其他函數的簡介”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汉阴县| 凤山市| 错那县| 天津市| 阿尔山市| 津南区| 瓮安县| 贺州市| 新乡市| 广东省| 梅河口市| 阿克| 攀枝花市| 辽中县| 天等县| 乌兰察布市| 永宁县| 衢州市| 揭西县| 富平县| 阜城县| 天镇县| 甘德县| 台湾省| 高尔夫| 南皮县| 海兴县| 肥城市| 巢湖市| 阳曲县| 固始县| 公安县| 揭东县| 浑源县| 德昌县| 岳西县| 黑龙江省| 祥云县| 蒙城县| 石家庄市| 乐昌市|