Писал sql запрос, нашёл ошибку в результатах.
Когда стал детально изучать, увидел косяк в case ... when ...
. До этого работал с Oracle, он бы такое не пропустил, а MySQL, видимо, кушает всё, что ему дают.
Вопрос - почему выражение select 'A' = 0
возвращает истину? MySQL видит в символе A
0-ю букву алфавита?
upd: посмотрел - любое выражение вида select 'some text' = 0
возвращает истину. MySQL как-то преобразует строку в число?
Как я понял это неявное преобразование типов. Вот примеры сравнивания чисел со строками в mysql.
Равно:
mysql> SELECT 1 = 0;
-> 0
mysql> SELECT '0' = 0;
-> 1
mysql> SELECT '0.0' = 0;
-> 1
mysql> SELECT '0.01' = 0;
-> 0
mysql> SELECT '.01' = 0.01;
-> 1
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Почему при смене языка не меняется название Фрагмента?