我看過一些程序員使用這個條件0='"="1'
,不知道它爲什麼會返回true?任何人都可以解釋給我嗎?謝謝!爲什麼這個條件0 ='= 1'是真的?
2
A
回答
4
爲了將數字與字符串進行比較,字符串被轉換爲數字。
當將一個字符串轉換爲一個數字時,mysql接受所有前導數字並丟棄其餘數字。如果沒有領先的數字,字符串轉換爲爲零:
0 = 'abc' -- true: string cast to 0
1 = '1abc' -- true: string cast to 1
你的字符串被評估爲0,因爲沒有領先的數字。
1
該問題與字符串的「異常」外觀無關。是。它只是原始的隱式類型轉換。你可以這樣做:
mysql> select 0='blablabla'; +---------------+ | 0='blablabla' | +---------------+ | 1 | +---------------+ 1 row in set, 1 warning (0.00 sec)
,看看你的理由:
mysql> show warnings; +---------+------+-----------------------------------------------+ | Level | Code | Message | +---------+------+-----------------------------------------------+ | Warning | 1292 | Truncated incorrect DOUBLE value: 'blablabla' | +---------+------+-----------------------------------------------+ 1 row in set (0.00 sec)
所以你'"="1'
一樣 - 它只是串並轉換過程中被截斷DOUBLE
導致零值。
相關問題
- 1. 爲什麼Perl認爲`1和0`是真的?
- 2. 爲什麼〜0是-1?
- 3. 爲什麼這個FALSE條件是TRUE?
- 4. 爲什麼2 + 1&0結果是0?
- 5. 紅寶石爲什麼0 || 1是0
- 6. 爲什麼Perl認爲-1是真的?
- 7. 爲什麼這個輸出是0%?
- 8. 爲什麼五個0爲什麼不是1到5
- 9. 爲什麼1 =='1,2'是真的?
- 10. 爲什麼(18446744073709551615 == -1)是真的?
- 11. 爲什麼-1 >> 1是-1?而1 >> 1是0!
- 12. 爲什麼retainCount是0而不是1?
- 13. 爲什麼0 && 1是1,而1 && 0在紅寶石中是0?
- 14. (0 + 1)*的DFA是什麼?
- 15. mysql:爲什麼比較一個'字符串'爲0是真的?
- 16. 爲什麼是真等於-1
- 17. 這個cron表達式的含義是什麼0 50 13 1 1/1? *?
- 18. 爲什麼這不是真的?
- 19. 爲什麼1/inf == 0但是1/0!= inf?
- 20. 爲什麼返回-1而不是0?
- 21. 什麼是真正的數組條件
- 22. 爲什麼這個條件返回true?
- 23. 爲什麼ModelState.IsValid是錯誤的,因爲條件爲真?
- 24. 爲什麼0 + 1 == 49?
- 25. 爲什麼這個評價爲真
- 26. 這個「Image Fetcher 0」是做什麼的?
- 27. 這個條件是什麼(BufferredReader和InputStreamReader)?
- 28. 這個條件是什麼意思?
- 29. 這個條件是什麼意思?
- 30. 爲什麼這個prolog查詢既是真的也是假的?
有些程序員?真? –
的確如此。問題是......實際上使用這種情況的人值得使用WAT? (https://www.destroyallsoftware.com/talks/wat) –