Maria DB — Предотвращает удаление завершающего пробела в предложении where

#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 по доступным строковым функциям и подобным элементам. Хорошо, это работает так, как ожидалось