ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

17.03.2016, 11:07
|
|
Guest
Сообщений: n/a
Провел на форуме: 91312
Репутация:
12
|
|
Не могу объяснить следующий корректный запрос:
Код:
Code:
SELECT * FROM `users` WHERE login = 'blablabla' + ''
Конечно, никакого пользователя blablabla в таблице нет, но запрос возвращает все записи. Что означает этот знак плюс?
|
|
|
|

17.03.2016, 13:07
|
|
Guest
Сообщений: n/a
Провел на форуме: 238786
Репутация:
40
|
|
Сообщение от user6334
user6334 said:
↑
Не могу объяснить следующий корректный запрос:
Код:
Code:
SELECT * FROM `users` WHERE login = 'blablabla' + ''
Конечно, никакого пользователя blablabla в таблице нет, но запрос возвращает все записи. Что означает этот знак плюс?
Пробел
|
|
|
|

17.03.2016, 13:14
|
|
Guest
Сообщений: n/a
Провел на форуме: 19071
Репутация:
10
|
|
Сообщение от user6334
user6334 said:
↑
Не могу объяснить следующий корректный запрос:
Код:
Code:
SELECT * FROM `users` WHERE login = 'blablabla' + ''
Конечно, никакого пользователя blablabla в таблице нет, но запрос возвращает все записи. Что означает этот знак плюс?
такой запрос эквивалент запросу
Код:
Code:
SELECT * FROM `users` WHERE login = 0
+ в мускле оператор сложения
зы. плохо искал кстати, http://dev.mysql.com/doc/refman/5.7/...functions.html
|
|
|
|

17.03.2016, 13:49
|
|
Guest
Сообщений: n/a
Провел на форуме: 91312
Репутация:
12
|
|
Заменяем + на пробел, получаем:
Код:
Code:
SELECT * FROM `users` WHERE login = 'blablabla' ''
На выводе ничего. Значит не пробел.
|
|
|
|

17.03.2016, 13:57
|
|
Guest
Сообщений: n/a
Провел на форуме: 91312
Репутация:
12
|
|
Про оператор сложения, это и так понятно )
Но, как понять login = 0 учитывая, что login имя пользователя, т.е. строчный тип
И почему запрос
Код:
Code:
SELECT * FROM `users` WHERE login = 0
возвращает всю таблицу, тогда как запрос
Код:
Code:
SELECT * FROM `users` WHERE login = 1
не возвращает ничего?
|
|
|
|

17.03.2016, 14:05
|
|
Guest
Сообщений: n/a
Провел на форуме: 19071
Репутация:
10
|
|
Сообщение от user6334
user6334 said:
↑
Про оператор сложения, это и так понятно )
Но, как понять login = 0 учитывая, что login имя пользователя, т.е. строчный тип
поле login преобразуется в integer, а там большинство строк будут равны 0
|
|
|
|

17.03.2016, 14:29
|
|
Guest
Сообщений: n/a
Провел на форуме: 91312
Репутация:
12
|
|
Сообщение от Waki
Waki said:
↑
поле login преобразуется в integer, а там большинство строк будут равны 0
С преобразованиями типов кажется разобрался ) Но так и не понял, почему запрос
Код:
Code:
SELECT * FROM `users` WHERE login = 'blablabla' + ''
или
Код:
Code:
SELECT * FROM `users` WHERE login = 'blablabla' + 'bebebe'
будет эквивалентен запросу
Код:
Code:
SELECT * FROM `users` WHERE login = 0
?
Может это из-за того, что знак плюс является арифметическим оператором, значит все, что он складывает приводиться к числовому типу?
|
|
|
|

17.03.2016, 15:33
|
|
Guest
Сообщений: n/a
Провел на форуме: 19303
Репутация:
4
|
|
Правая часть из за сложения конвертирует оба слагаемых в цифры. Затем левую часть тоже пытается привести к числовому типу. Странно что при этом выдает результат, а не ошибку.
Оракл на такой же запрос ругается на несоответсвие типов и это логично.
|
|
|
|

17.03.2016, 16:05
|
|
Guest
Сообщений: n/a
Провел на форуме: 91312
Репутация:
12
|
|
Сообщение от Alex_gan
Alex_gan said:
↑
Правая часть из за сложения конвертирует оба слагаемых в цифры. Затем левую часть тоже пытается привести к числовому типу. Странно что при этом выдает результат, а не ошибку.
Оракл на такой же запрос ругается на несоответсвие типов и это логично.
В Оракл и MYSQL знак плюс используется кроме арифметического сложения еще и для конкатенации строк
|
|
|
|

17.03.2016, 16:20
|
|
Guest
Сообщений: n/a
Провел на форуме: 19303
Репутация:
4
|
|
На счет мускула не скажу, а вот в Оракле конкатенация строк это ||. Если + когда то и использовался для этого то в каких то совсем уж древнючих версиях.
|
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|