MySQL: символ A = 0?

223
10 июня 2017, 14:14

Писал sql запрос, нашёл ошибку в результатах.

Когда стал детально изучать, увидел косяк в case ... when .... До этого работал с Oracle, он бы такое не пропустил, а MySQL, видимо, кушает всё, что ему дают.

Вопрос - почему выражение select 'A' = 0 возвращает истину? MySQL видит в символе A 0-ю букву алфавита?

upd: посмотрел - любое выражение вида select 'some text' = 0 возвращает истину. MySQL как-то преобразует строку в число?

Answer 1

Как я понял это неявное преобразование типов. Вот примеры сравнивания чисел со строками в 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
READ ALSO
Как выполнить фильтр по полю типа SET в Sphinx?

Как выполнить фильтр по полю типа SET в Sphinx?

В таблице есть поле типа SETПример foo,bar,baz

389
Symfony 3. Связь таблиц many-to-one

Symfony 3. Связь таблиц many-to-one

Делал выборку данных

421
Почему при смене языка не меняется название Фрагмента?

Почему при смене языка не меняется название Фрагмента?

Почему при смене языка не меняется название Фрагмента?

333