Intereting Posts
Регулярные выражения PCRE с использованием подпрограмм named pattern Вызов функции PHP с помощью AJAX, но перенаправление не работает Получите дату недели с PHP If-statement: как вытащить вторую переменную GET Извлечь имена полей формы PDF из формы PDF объединить 2 ассоциативных массива, где значения соответствуют Автозаполнение текста и контур класса для проекта PHP mysql_insert_id (); не возвращать значение после успешной вставки строки Прочитайте текст из файла и загрузите новую строку из строки каждые 24 часа Запрос для отображения группы строк столбцов данных по значению данных в JSON из php Какие существуют методы для создания большой системы уведомлений по электронной почте? Преобразование Lat / Longs в координаты X / Y Разница между установкой ID напрямую и установкой красноречивого отношения ассоциирования при сохранении модели в Laravel? Когда использовать $ this-> свойство вместо $ property в PHP Как предотвратить множественные вставки при отправке формы в PHP?

Оператор MySQL SELECT: как получить один точный результат строки из похожих строк?

У меня есть такие строки «SEO» в простых категориях таблицы (id, name, seo) :

"abc" "abc 22" "abc 33" 

как в MySQL получить с этим запросом

 SELECT id FROM categories WHERE seo='abc' AND LENGTH('abc')='3';" 

один точный результат строки «abc» из «abc» без нахождения «abc 22» и «abc 33»?

 create table stuff ( id int auto_increment primary key, seo varchar(100) not null -- unique key (seo) not a bad idea ); insert stuff (seo) values ('abc'),('abc7'),('kitty likes abc'),('abc and more abc'),('kittens'); insert stuff (seo) values ('abc at beginning'),('frogs'),('and at the end abc'),('qwertyabcqwerty'); select id from stuff where seo='abc'; +----+ | id | +----+ | 1 | +----+ 1 row in set (0.02 sec) 

Вот как выглядит поведение:

 select * from stuff where seo like '%abc'; +----+--------------------+ | id | seo | +----+--------------------+ | 1 | abc | | 3 | kitty likes abc | | 4 | abc and more abc | | 8 | and at the end abc | +----+--------------------+ 4 rows in set (0.00 sec) select * from stuff where seo like 'abc%'; +----+------------------+ | id | seo | +----+------------------+ | 1 | abc | | 2 | abc7 | | 4 | abc and more abc | | 6 | abc at beginning | +----+------------------+ 4 rows in set (0.00 sec) select id,seo from stuff where seo like '%abc%'; +----+--------------------+ | id | seo | +----+--------------------+ | 1 | abc | | 2 | abc7 | | 3 | kitty likes abc | | 4 | abc and more abc | | 6 | abc at beginning | | 8 | and at the end abc | | 9 | qwertyabcqwerty | +----+--------------------+ 7 rows in set (0.00 sec) 

Поскольку вы используете точный оператор сравнения, вы можете просто использовать:

SELECT id FROM categories WHERE seo = 'abc';

Нет необходимости тестировать длину, так как вы используете = .