#mysql #sql #match
#mysql #sql #совпадение
Вопрос:
У меня есть следующая строка, которую мне нужно передать в базу данных MySQL:
TURNER SERIES TREA @treavturnerL @tvturner
У меня есть следующие строки, возвращенные для запроса SELECT name FROM player
:
Babe Ruth
Ken Griffey Jr.
Trea Turner
Hank Aaron
Brandon Crawford
Как я могу создать какой-либо запрос (или хранимую процедуру), который будет возвращать Trea Turner
, поскольку его имя содержится в исходной строке?
Комментарии:
1. Видишь db-fiddle.com/f/kz9E7EvqXZBQ81uzM92tDN/0
Ответ №1:
Один из ответов — это полнотекстовый индекс, где вы можете использовать match
— как предлагает Strawberry в комментарии.
Вы также можете сделать это с помощью регулярных выражений. Если вам нужно какое-либо совпадение, вы можете использовать трюк с регулярными выражениями: просто замените пробелы на |
:
where p.player regexp replace('TURNER SERIES TREA @treavturnerL @tvturner', ' ', '|')
Если вы хотите, чтобы все «слова» в имени игрока совпадали, вы можете заменить каждое слово с помощью regexp_replace()
. Если не осталось ничего, кроме пробелов, у вас есть совпадение:
where trim(regexp_replace(p.player, replace('TURNER SERIES TREA @treavturnerL @tvturner', ' ', '|'), '')) = ''
Вот скрипка db<>.