mysql 字串和數字比,字串會隱式轉換為數字0
在mysql中,字串和數字比,字串會被轉成數字0。
下面我演示:
mysql> create table t (a int primary key, b int,c int, d int, index idx_b_c_d (b,c,d)); Query OK, 0 rows affected (0.14 sec) mysql> insert into t values (0,0,0,0),(1,1,1,1),(2,2,2,2),(3,3,3,3); Query OK, 4 rows affected (0.00 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql> select * from t; +---+------+------+------+ | a | b | c | d | +---+------+------+------+ | 0 | 0 | 0 | 0 | | 1 | 1 | 1 | 1 | | 2 | 2 | 2 | 2 | | 3 | 3 | 3 | 3 | +---+------+------+------+ 4 rows in set (0.00 sec)
下面演示奇怪現象:
mysql> select * from t where a=1; +---+------+------+------+ | a | b | c | d | +---+------+------+------+ | 1 | 1 | 1 | 1 | +---+------+------+------+ 1 row in set (0.00 sec) mysql> select * from t where a='t'; +---+------+------+------+ | a | b | c | d | +---+------+------+------+ | 0 | 0 | 0 | 0 | +---+------+------+------+ 1 row in set, 1 warning (0.00 sec) mysql> select * from t where a='ttt'; +---+------+------+------+ | a | b | c | d | +---+------+------+------+ | 0 | 0 | 0 | 0 | +---+------+------+------+ 1 row in set, 1 warning (0.00 sec) mysql> select * from t where a='bbb'; +---+------+------+------+ | a | b | c | d | +---+------+------+------+ | 0 | 0 | 0 | 0 | +---+------+------+------+ 1 row in set, 1 warning (0.00 sec)
可以看到,where a='bbb' 能查出a=0的行,這就是因為mysql把字串bbb轉成了數字0。
透過下面可以驗證,1表示為真,0表示為假:
mysql> select 'ttt'=0; +---------+ | 'ttt'=0 | +---------+ | 1 | +---------+ 1 row in set, 1 warning (0.01 sec) mysql> select 'ttt'=1; +---------+ | 'ttt'=1 | +---------+ | 0 | +---------+ 1 row in set, 1 warning (0.00 sec) mysql> select 'bbb'=1; +---------+ | 'bbb'=1 | +---------+ | 0 | +---------+ 1 row in set, 1 warning (0.00 sec)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28916011/viewspace-2905961/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Thymeleaf將字串轉換為數字字串
- javascript數字和字串相互轉換JavaScript字串
- 字串和數字的相互轉換字串
- JavaScript字串轉換數字JavaScript字串
- javascript如何將字串轉換為數字JavaScript字串
- 數字格式字串轉數字保留後面0字串
- Awk 字串連線操作(字串轉數字,數字轉字串)字串
- js利用Number()函式將字串轉換為數字JS函式字串
- 將字串轉為數字字串
- javascript數字和字串的相互轉換JavaScript字串
- c++中數字和字串的轉換C++字串
- C++/C:數字轉成字串, 字串轉成數字C++字串
- c語言字串,數字轉換C語言字串
- 如何在MySQL中使用CONVERT將字串轉換為數字MySql字串
- 大小寫互換-"數字字串"轉換成數字字串
- js將字串轉換為數字程式碼例項JS字串
- C#字串轉換為數字的4種方法C#字串
- c++中字元、字串和數字間的轉換C++字元字串
- Octave 數字轉字元,連線兩個字串,以及如何將字串轉換為變數名稱字元字串變數
- 演算法數字轉化為字串演算法字串
- 字串或數字反轉字串
- Swift3.0語言教程字串轉換為數字值Swift字串
- 字串轉換為數字時判斷非法字元並校正字串字元
- shell下數字和字串比較操作命令字串
- {{rateTime}}大括號裡面的數字轉換為字串(日期)字串
- javascript中將數字轉為字串的方法JavaScript字串
- C++將數字轉為字串,並拼接C++字串
- 判斷迴文串 字串/數字相互轉換字串
- C語言“字串-數字”之間的轉換C語言字串
- JavaScript 字串轉數字:陷阱(示例)JavaScript字串
- 字串轉數字的問題字串
- 【Go】IP地址轉換:數字與字串之間高效轉換Go字串
- 字串:怎樣轉換字串為數字型別? (轉)字串型別
- oracle中字串的大小比較,字串與數字的比較和運算Oracle字串
- 將數值轉換為字串的函式字串函式
- 比較字串和數字串字串
- Go 中數字轉換字串的正確姿勢Go字串
- 數字與字串5.5字串