Мне нужно пропустить слова DORM, Dorm и dorm с помощью регулярного выражения, но оставить их, если после этого есть слово PREMIUM, Premium или premium. Как я могу это сделать? Как я понял, я могу пропустить "DORM, Dorm and dorm" с этим регулярным выражением (^DORM|Dorm|dorm)
, но как мне сделать это "если" после этого?
Непонятно, о чем вы спрашиваете. Пожалуйста, разместите больше кода, чтобы мы могли видеть контекст
Должен ли «DORM» быть в начале строки, или он может быть где угодно в строке?
Было бы более эффективно, если бы сортировка (сортировка, заканчивающаяся на ci
) выполняла свертывание регистра за вас. Если вас это устраивает, то это может быть самый простой вариант:
WHERE str LIKE '%dorm%premium%'
Эквивалентное регулярное выражение медленнее:
WHERE str REGEXP 'dorm.*premium'
Но, если вам нужны границы слов, это работает в regexp
, но не в like
:
WHERE str REGEXP '[[:<:]]dorm[[:>:]].*[[:<:]]premium[[:>:]]'
Есть много проблем с Вопросом (и, следовательно, с моим Ответом):
^
) перед DORM
, а перед остальными нет?dormitory
?doRM
?REGEXP
(или LIKE
) при использовании в предложении WHERE
«пропускает строки».
Что вы имеете в виду, "пропустить использование регулярного выражения"? выбрать все записи, в которых в определенном поле нет «общежития»? Кроме того,
(^DORM|Dorm|dorm)
- это странное регулярное выражение, которое соответствуетDORM
в начале строки, ноDorm
илиdorm
в любом месте строки ...?