共計 4899 個字符,預計需要花費 13 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這篇文章將為大家詳細講解有關 MySQL 中其他函數的簡介,丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
其他函數
(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 問一下細節