#mysql #mariadb
#mysql #mariadb
Вопрос:
MariaDB версии 10.3.22 и 10.3.23
У меня есть таблица с именами столбцов, подобными этим. Вторая запись содержит конечные пробелы. Тип данных столбца — Varchar(50)
"John"
"John "
Я хочу, чтобы приведенный ниже запрос возвращал только первую запись, но он возвращает обе записи. Похоже, что внутренне он выполняет обрезку во время сравнения. Любой способ выполнить точное совпадение
Select name from <table> where name="John";
Аналогично, приведенный ниже запрос не должен возвращать никаких строк, поскольку я пытаюсь сопоставить с дополнительным пространством, но он выводит две строки. Происходит некоторая закулисная обрезка. Необходимо либо отключить его, либо в любом случае выполнить точное совпадение
Select name from <table> where name="John ";
Комментарии:
1. Подумайте, действительно ли вы хотите сохранить завершающие пробелы. С этим будет сложно работать.
2. Понимаю, но таково требование. Нам нужно сохранить, поскольку как с пробелами, так и без них, это имеет собственное деловое значение
Ответ №1:
Используйте BINARY
опцию для точного сравнения, а не в виде строк.
Select name from <table> where BINARY name="John";
Комментарии:
1. Спасибо. Я пытался просмотреть документацию MariaDB по доступным строковым функциям и подобным элементам. Хорошо, это работает так, как ожидалось