TGViewer
Pragmatic Programmer Pragmatic Programmer @pragmatic_programmer · 4.25K subscribers
Post #120 2.65K
Задачка на прокачку SQL: разбор ответа про пробелы
Правильный ответ: 1 строка :)
Запрос успешно найдет пользователя 'Alex', несмотря на лишние пробелы в условии.
В чем подвох и почему и как это работает? Все дело в стандарте ANSI SQL и том, как MySQL обрабатывает сравнение строк.
Правило Pad Space: По умолчанию в MySQL при сравнении строк оператором = (равно) используется алгоритм, который игнорирует конечные пробелы (trailing spaces).
СУБД виртуально «добивает» короткую строку пробелами до длины длинной строки, а затем уже сравнивает их.
Поэтому 'Alex' и 'Alex ' для нее это одно и то же.
Исключение из правил - это поведение справедливо для большинства кодировок (Collations) и типов данных (CHAR, VARCHAR).
Однако, если вы будете использовать оператор LIKE вместо =, магия исчезнет:
WHERE username LIKE 'Alex '
вернет 0 строк, так как LIKE учитывает каждый символ буквально.

Как это исправить, если вам нужно строгое сравнение?
Если логика вашего приложения требует учитывать пробелы, например, при авторизации или поиске, есть два варианта:
1. Использовать оператор LIKE

2. Привести строку к бинарному виду с помощью BINARY:
SELECT * FROM users WHERE BINARY username = 'Alex ';
В таком случае MySQL будет сравнивать байты символов напрямую, и запрос вернет 0 строк.

Кстати, с прошедшим 256-м днем года ;)
  • ❤ 25
  • 👍 6
More from @pragmatic_programmer
  1. Oct 7, 2026Попросили ответы объяснять. Пробуем ) A. Автор будет включен в результат, а для всех колон…
  2. Oct 5, 2026Новая задача: есть две таблицы, authors и books, соединенные по внешнему ключу. Если вы вы…
  3. Oct 2, 2026Сегодня и завтра участвуем в конференции Stepicon, оффлайн в Москве. Учимся учить любимых…
  4. Sep 30, 2026Какая из характеристик функции в MySQL предполагает, что функция будет возвращать одинаков…
  5. Sep 28, 2026Официальный талисман — дельфин Сакила. У MySQL есть узнаваемый логотип с дельфином. Его зо…
  6. Sep 25, 2026photo post
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →