程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Mysql隱式類型轉換原則,mysql隱原則

Mysql隱式類型轉換原則,mysql隱原則

編輯:MySQL綜合教程

Mysql隱式類型轉換原則,mysql隱原則


MySQL 的隱式類型轉換原則:

- 兩個參數至少有一個是 NULL 時,比較的結果也是 NULL,例外是使用 <=> 對兩個 NULL 做比較時會返回 1,這兩種情況都不需要做類型轉換
- 兩個參數都是字符串,會按照字符串來比較,不做類型轉換
- 兩個參數都是整數,按照整數來比較,不做類型轉換
- 十六進制的值和非數字做比較時,會被當做二進制串,和數字做比較時會按下面的規則處理
- 有一個參數是 TIMESTAMP 或 DATETIME,並且另外一個參數是常量,常量會被轉換為 timestamp
- 有一個參數是 decimal 類型,如果另外一個參數是 decimal 或者整數,會將整數轉換為 decimal 後進行比較,如果另外一個參數是浮點數,則會把 decimal 轉換為浮點數進行比較
- 所有其他情況下,兩個參數都會被轉換為浮點數再進行比較

注意一個安全問題:假如 password 類型為字符串,查詢條件為 int 0 則會匹配上。

由於 MySQL 隱式類型轉換規則比較復雜,依賴 MySQL 隱式轉換很容易出現各種想想不到的問題,而且 MySQL 隱式類型轉換本身也是非常耗費 MySQL 服務器性能的,所以非常不推薦這樣使用。

 

詳見博文:http://www.cnblogs.com/rollenholt/p/5442825.html

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved