Я видел некоторых программистов, использующих это условие 0='"="1'
и не знаю, почему он возвращает true? Может ли кто-нибудь объяснить это мне? Спасибо!Почему это условие 0 = '= 1' истинно?
ответ
Чтобы сравнить число со строкой, строка преобразуется в число.
При наведении строки на число mysql принимает все ведущие числа и выбрасывает остальное. Когда нет ведущих чисел, строка приводится к нулю:
0 = 'abc' -- true: string cast to 0
1 = '1abc' -- true: string cast to 1
Ваша строка оценивается как 0, так как нет ведущих чисел.
Я удаляю свой ответ, потому что ваш значительно лучше. Правда ли, что RHS всегда преобразуется в тип LHS? Значение '' '= 0' соответствует true? – Gray
@Gray упс! ваш пример был хорошим: '' '= 0' истинно, поэтому я изменил свое первое предложение. – Bohemian
О, круто. Спасибо за проверку. Нельзя ли это просто означать, что '0' приписывается' ''', когда это строка? Я не пытался сказать, что вы неверны, просто хотите понять, как он выбирает бросить. Я думал, что есть какой-то порядок приоритета, но вы упомянули, что это имеет отношение к стороне. Я не мог найти ничего, что говорило бы, что вы были неправы. – Gray
Проблема не имеет отношения к «необычным» внешним видом строки. Да. это просто примитивное неявное преобразование типов. Вы можете сделать:
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. Почему 0 === -0 истинно, но 1/0 === 1/-0 ложно?
- 2. 0 <0 -1 истинно?
- 3. Почему это так: 0 ложно, а {} + [] равно 0, но !! ({} + []) истинно?
- 4. Почему это, когда условие возвращает 0 строк?
- 5. Почему 0 == '' истинно в Javascript?
- 6. Почему 0 истинно, но false - 1 в оболочке?
- 7. Почему это только возвращает значения 1 & 0?
- 8. Почему! (0 || 1 || 0) - 0?
- 9. Почему это условие верно?
- 10. проверка поля, когда условие истинно
- 11. Вызов функции, когда условие истинно
- 12. воспроизводить звук, пока условие истинно
- 13. ServiceNow показать, если условие истинно
- 14. Почему это условие ложно?
- 15. Скопируйте файл, если условие истинно
- 16. ВСТАВИТЬ когда IF условие истинно
- 17. Merge Подсписок, если условие истинно
- 18. Почему это условие CASE Возвращает 1 для несоответствия LIKE?
- 19. Почему в Javascript '' == '0' неверно, но 0 == '' истинно?
- 20. Почему Math.pow (0, 0) === 1?
- 21. Условие (num% 3 === 0): зачем это нужно сравнивать с 0?
- 22. Отправить форму, если условие истинно
- 23. T-SQL точно 1 условие истинно из набора условий
- 24. Прекратить метод до условие истинно
- 25. R: почему это условие цикла?
- 26. Это выражение истинно в Python: {} .keys(). Insert (0, "") == None. Зачем?
- 27. Почему это работает только частично это условие?
- 28. Почему это условие работает частично?
- 29. остановки код, если условие истинно
- 30. Если условие истинно, кнопка show
Некоторые программисты? В самом деле? –
Это действительно так. Вопрос в том, кто-то, кто действительно использует это условие, заслуживает WAT? (https://www.destroyallsoftware.com/talks/wat) –