Mysql where條件string轉int字段的處理


緣起

CREATE TABLE `test_tb` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id',
  `value_comment` varchar(100) NOT NULL DEFAULT '' COMMENT '描述',
   `value_code` int(11) NOT NULL COMMENT '編碼',
  PRIMARY KEY (`id`)
  ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;

插入4條數據

 

查詢value_code='abc'的記錄

select * from test_tb where value_code = 'abc'

結果

 

問題
為何我查的是'abc'返回的是值為0的兩條記錄

原理

Mysql會將傳入的string(要賦值給int字段的)從左到右的第一個非數值開始,將后面的字符串轉成0,再和數值類型相加。

如上述例子就是“abc”->0。查詢為:select * from test_tb where value_code=0

“12abc”->12+0。查詢為:select from test_tb where value_code=12

 

 


免責聲明!

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



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