SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 21.02.2011 18:20:28

tazododu
Завсегдатай
Зарегистрирован: 24.09.2010
Сообщений: 51

При запросе Where строка приводится к числу?!..

Всем привет!!

Обнаружил интересную особенность:


SELECT `id`, `title`, `text`, DATE_FORMAT(`date`, '%d-%m-%Y') AS `date`, `preview`, `pic_name`, `is_published`, `last_edit`
FROM `tbl`
WHERE `id`='63asasd-acsacasc-scasssscasc-asdasdasd-1111'
AND `is_published`='1'
LIMIT 0,1


возвращает запись с id = 63!

id естественно integer

Кто-нибудь знает в чем может быть дело? Посмотрел в документации ничего такогоне нашел..

Неактивен

 

#2 21.02.2011 19:00:20

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: При запросе Where строка приводится к числу?!..

А Вы попробуйте сказать, что более тяжелое — зеленое или быстро?

Конечно, приводит.

Неактивен

 

#3 21.02.2011 19:06:14

tazododu
Завсегдатай
Зарегистрирован: 24.09.2010
Сообщений: 51

Re: При запросе Where строка приводится к числу?!..

откуда вы все знаете)) не могли бы вы направить меня в нужный раздел документации, то я сам не нашел таких ньюансев. по моей логике он вообще ничего не должен был бы вернуть)

Неактивен

 

#4 21.02.2011 19:33:32

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: При запросе Where строка приводится к числу?!..

Ээ... это следствия элементарной логики, а не документации. Вы не можете
сравнивать разные по типу объекты. Даже в школьном курсе математики учат,
что 500мм меньше 1м, потому что разная размерность. Чтобы сравнить — при-
водят 1м к миллиметрам, и сравнивают числа одной размерности.

Так же и при сравнении строки с числом — строку приводят к числу, а потом
получившиеся числа сравнивают.

Отвечу сразу на «почему не число к строке» — потому что в табличке лежат
числа, а строка одна. Одну строку привести легче, чем много много чисел. Ну
и как бонус — в этом случае можно использовать индекс wink

Неактивен

 

#5 22.02.2011 09:44:16

tazododu
Завсегдатай
Зарегистрирован: 24.09.2010
Сообщений: 51

Re: При запросе Where строка приводится к числу?!..

тут вы правы, но если бы я приводил строку к инту в пхп (int) мне бы вернули 0...

Неактивен

 

#6 22.02.2011 15:40:21

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: При запросе Where строка приводится к числу?!..

Это говорит только о том, что PHP никуда не годится. Все нормальные языки
строку, начинающуюся с числа, приводят к этому числу. Впрочем, я Вам не
верю, т.к. PHP строку '17' наверняка приведет к 17, а не к нулю. Что, к сожа-
лению, не отменяет того, что PHP никуда не годится smile

Неактивен

 

#7 22.02.2011 21:43:04

KnKill
Участник
Зарегистрирован: 08.02.2011
Сообщений: 6

Re: При запросе Where строка приводится к числу?!..

tazododu написал:

тут вы правы, но если бы я приводил строку к инту в пхп (int) мне бы вернули 0...

Ложь:
http://i51.tinypic.com/2gx1udl.jpg

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson