關於MySQL隱式轉換

來源:互聯網
上載者:User

標籤:關於mysql隱式轉換

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

  1、表DDL

650) this.width=650;" class="confluence-embedded-image" src="http://wiki.op.xywy.com/download/attachments/13305667/image2016-5-27%2016%3A9%3A27.png?version=1&modificationDate=1464336560000&api=v2" alt="image2016-5-27%2016%3A9%3A27.png?version" />

2、傳int的sql

650) this.width=650;" class="confluence-embedded-image" src="http://wiki.op.xywy.com/download/attachments/13305667/image2016-5-27%2016%3A10%3A11.png?version=1&modificationDate=1464336605000&api=v2" alt="image2016-5-27%2016%3A10%3A11.png?versio" />

3、傳字串的sql

650) this.width=650;" class="confluence-embedded-image" src="http://wiki.op.xywy.com/download/attachments/13305667/image2016-5-27%2016%3A10%3A49.png?version=1&modificationDate=1464336642000&api=v2" alt="image2016-5-27%2016%3A10%3A49.png?versio" />

仔細看下錶結構,rid的欄位類型: 650) this.width=650;" class="confluence-embedded-image" src="http://wiki.op.xywy.com/download/attachments/13305667/image2016-5-27%2016%3A9%3A38.png?version=1&modificationDate=1464336572000&api=v2" alt="image2016-5-27%2016%3A9%3A38.png?version" />

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

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

此外,還需要注意的是:

數字類型的0001等價於1

字串的0001和1不等價


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

1、表DDL

650) this.width=650;" class="confluence-embedded-image" src="http://wiki.op.xywy.com/download/attachments/13305667/image2016-5-27%2016%3A13%3A26.png?version=1&modificationDate=1464336799000&api=v2" alt="image2016-5-27%2016%3A13%3A26.png?versio" />

2、不超範圍傳字串的sql

650) this.width=650;" class="confluence-embedded-image" src="http://wiki.op.xywy.com/download/attachments/13305667/image2016-5-27%2016%3A14%3A44.png?version=1&modificationDate=1464336877000&api=v2" alt="image2016-5-27%2016%3A14%3A44.png?versio" />

3、不超範圍傳數位sql

650) this.width=650;" class="confluence-embedded-image" src="http://wiki.op.xywy.com/download/attachments/13305667/image2016-5-27%2016%3A15%3A8.png?version=1&modificationDate=1464336902000&api=v2" alt="image2016-5-27%2016%3A15%3A8.png?version" />

 

4、超出範圍傳字串的sql

650) this.width=650;" class="confluence-embedded-image" src="http://wiki.op.xywy.com/download/attachments/13305667/image2016-5-27%2016%3A23%3A10.png?version=1&modificationDate=1464337384000&api=v2" alt="image2016-5-27%2016%3A23%3A10.png?versio" />

650) this.width=650;" class="confluence-embedded-image" src="http://wiki.op.xywy.com/download/attachments/13305667/image2016-5-27%2016%3A24%3A46.png?version=1&modificationDate=1464337480000&api=v2" alt="image2016-5-27%2016%3A24%3A46.png?versio" />

5、超出範圍傳數位sql

650) this.width=650;" class="confluence-embedded-image" src="http://wiki.op.xywy.com/download/attachments/13305667/image2016-5-27%2016%3A23%3A56.png?version=1&modificationDate=1464337430000&api=v2" alt="image2016-5-27%2016%3A23%3A56.png?versio" />

650) this.width=650;" class="confluence-embedded-image" src="http://wiki.op.xywy.com/download/attachments/13305667/image2016-5-27%2016%3A25%3A6.png?version=1&modificationDate=1464337500000&api=v2" alt="image2016-5-27%2016%3A25%3A6.png?version" />


本文出自 “10937712” 部落格,請務必保留此出處http://10947712.blog.51cto.com/10937712/1845609

關於MySQL隱式轉換

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.