SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 22.01.2013 19:31:25

Nikkore
Участник
Зарегистрирован: 11.12.2012
Сообщений: 10

О поле Host в mysql.user

Здравствуйте еще раз!))

Никак не могу понять, почему у меня выполняется запрос в следующей форме:

SELECT * FROM mysql.user WHERE ((User = "root") AND (Host=0));

Ведь поле Host в данном случае не пустое, а содержит "localhost". Или localhost - это все равно, что NULL?

Спасибо!

Неактивен

 

#2 22.01.2013 19:39:07

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: О поле Host в mysql.user

Проводится сравнение строки с числом. При этом Host неявно приводится к числу - любая строка, начинающаяся с буквы превращается в ноль. Запрос бессмысленный по своему назначению, так как выдаст юзеров root со всех нечисловых хостов.

Неактивен

 

#3 22.01.2013 20:53:02

Nikkore
Участник
Зарегистрирован: 11.12.2012
Сообщений: 10

Re: О поле Host в mysql.user

Спасибо, понятно. По неопытности я не учел, что "= 0" и "IS NULL" - не одно и то же.
Кроме того, насколько я понял, поле "host" вообще пустым быть не может - там либо "%", либо "localhost", либо что-то более содержательное.

Неактивен

 

Board footer

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