Я могу думать о запутанных и уродливых способах сделать это в mysql, но я ищу хороший способ. Скажем, у меня есть куча названий школ, какmysql: самый лучший способ сказать «строка до первого экземпляра любого из следующих ключевых слов»?
Meopham County Infant School
Speldhurst Nursery School
Rainbow Pre-School
The Annex School House
Fleet Learning Zone
Dartford Grammar School
Kiddliwinks
Hextable Kindergarten
The Rocking Horse Montessori Kinder
Little Angels Day Nursery
и у меня есть список игнорируемых слов:
["school", "primary", "nursery", "college", "junior", "church", "cofe", "community", "infant"]
У меня есть функция рубиновой «SHORT_NAME», который возвращает название школы до, но не включая, первый экземпляр любого из стоп-слов, так что мы получаем
"Bower Grove School" => "Bower Grove"
"Fulston Manor School" => "Fulston Manor"
"St Johns Church Hall Play" => "St Johns"
"St Botolph's Church of England Voluntary Aided Primary School" => "St Botolph's"
"Fawkham House School" => "Fawkham House"
"Silverdale Day Nursery" => "Silverdale Day"
"Vigo Village School" => "Vigo Village"
"Sevenoaks Primary School" => "Sevenoaks"
"High Weald Academy" => "High Weald Academy"
"The Ebbsfleet Academy" => "The Ebbsfleet Academy"
Это все в порядке. Мой вопрос: какой самый простой способ выполнить описанную выше обработку строк в mysql?
например, если я хотел искать этого SHORT_NAME, я хотел бы сделать что-то вроде
"select * from schools where <function(name)> = 'Bower Grove'"
, что это самый простой способ сделать <function>
? Я думал, что некоторая комбинация substring() и locate() с использованием регулярного выражения будет способом, но похоже, что я не могу использовать регулярное выражение с локацией.
Я предполагаю, что регулярное выражение будет
"school|primary|nursery|college|junior|church|cofe|community|infant"
спасибо, Макс
http://stackoverflow.com/questions/5361457/mysql-return-matching-pattern-in-regexp-query – Taemyr
Спасибо @Taemyr, я бы предпочел избежать решения, требующего исправления для MySQL, если это возможно. Оцените вариант, хотя :) –
Вы вообще не рассматривали использование предложения LIKE? 'SELECT * FROM school WHERE name LIKE 'Bower Grove%';' будет возвращать все школы, где имя начинается с строки 'Bower Grove'. –