Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > Поиск по слову в mysql ?


Автор: Poveritov 23.12.2016, 16:08
Здравствуйте.

подскажите как осуществить поиск следующего содержания:

в таблице есть полей uname   где указано имя и фамилия в формате 'Имя Фамилия'.

требуется отобрать записи из таблицы в которой:
    имя из поля uname содержится в тексте 'Фамилия1 Имя1 Фамилия2 Имя2 Фамилия3 Имя3  и т.д.'  И
    фамилия из поля uname содержится в тексте 'Фамилия1 Имя1 Фамилия2 Имя2 Фамилия3 Имя3  и т.д.'

мой вариант
 
Код

select * from table_name
where 
locate(SUBSTRING_INDEX (uname, ' ', -1), 'Фамилия1 Имя1 Фамилия2 Имя2 Фамилия3 Имя3' ) AND LOCATE(SUBSTRING_INDEX (uname, ' ', 1), 'Фамилия1 Имя1 Фамилия2 Имя2 Фамилия3 Имя3' ) 


находит не только Фамилия1 Имя1, но и все записи, если uname будет содержать такое значение Илия1 Мя1

Мне нужен точный поиск слова в строке.

match against не позволяет match использовать внутри себя функцию SUBSTRING_INDEX (uname, ' ', -1)

Автор: Akina 23.12.2016, 17:23
Добавьте пробелы в начало и конец как строки, так и искомого фрагмента.

Автор: Poveritov 24.12.2016, 15:45
Цитата(Akina @ 23.12.2016,  17:23)
Добавьте пробелы в начало и конец как строки, так и искомого фрагмента.

Спасибо, помогло!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)