Поставил это случайно, окей я понимаю, что когда мы вводим кавычку, подразумевается что тело запроса окончено, дальше мы ставим комментарий (причем без пробела), все что после него не учитывается, потом снова кавычка, которая не учитывается вроде бы, потому что мы поставили знак комментария, однако если написать вот так '== или вот так ==' или вот так 'SELECT pass FROM users where id=9, то все это неверно, че за фигня и как это работает?
Без пробела -- распознаётся как арифметическая операция, а не комментарий (это описано в документации).
чтобы вычислить ваше выражение
login ''--''
вступает в дело неявное преобразование типов, которое преобразует '' в 0. Получается 0--0.
Чтобы сравнить все значения login в таблице c этим 0 опять вступает в дело преобразование типов и каждое значение приводится к числу (соответственно если логин начинается не с цифры, большей 0, то он будет равен 0). Ну и в результате запрос возвращает все логины, начинающиеся не с цифры, большей 0.