關於MySQL隱式轉換


一、如果表定義的是varchar字段,傳入的是數字,則會發生隱式轉換。

  1、表DDL

 

2、傳int的sql

 

image2016-5-27%2016%3A10%3A11.png?versio

3、傳字符串的sql

 

 

仔細看下表結構,rid的字段類型: 

  

而用戶傳入的是int,這里會有一個隱式轉換的問題,隱式轉換會導致全表掃描。

把輸入改成字符串類型,執行計划如下,這樣就會很快了。

此外,還需要注意的是:

數字類型的0001等價於1

字符串的0001和1不等價

 

二、如果表定義的是int字段,傳入的是字符串,在不超過int范圍內,不會發生隱式轉換,如果超出范圍並且比較大小(以字符串類型比較'$')會隱式轉換。

1、表DDL

 

2、不超范圍傳字符串的sql

 

 

3、不超范圍傳數字的sql

 

 

  

 

4、超出范圍傳字符串的sql

 

 

5、超出范圍傳數字的sql

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM