#mysql #sql #string #where-clause
#mysql #sql #строка #where-предложение
Вопрос:
Мне нужна помощь в запросе mysql, я написал этот запрос
select * from post where content REGEXP '^q'
этот запрос работает, но он также включает пробелы в фильтре, что я хочу сделать, если какая-либо строка содержимого, подобная "qqqqqq"
или "qqqq"
или "qqq"
или "qq"
или "q"
только для этой строки, должна фильтроваться, прямо сейчас, что происходит, если у меня есть строка, подобная "qqqq qq"
then, и она дает мне результат, не следует учитывать, чтопробел, кто-нибудь может помочь мне решить эту проблему?
Комментарии:
1. Ваше выражение только «начинается с q» (в основном идентично
where content like 'q%'
). Каковы ваши точные спецификации?2. Как насчет q *? ^ q указывает, что совпадение должно начинаться с q .
Ответ №1:
Вы можете исправить свое регулярное выражение следующим образом:
select * from post where content REGEXP '^q
Это регулярное выражение означает, что строка начинается с q
и содержит только 1 или более q
символов до конца строки
Протестируйте его на SQLize.online
Ответ №2:
Попробуйте использовать это ^q (?![s]) $ регулярное выражение.
Приведенное выше регулярное выражение будет проверять наличие строки, начинающейся с q и без пробела.
Ответ №3:
Вам действительно не нужно регулярное выражение для этого. Строковые функции, вероятно, будут более эффективными. Вы можете заменить все "q" на пустые строки и убедиться, что результирующая строка пуста:
select * from post where replace(content, 'q', '') = ''
Обратите внимание, что это также допускает пустую строку. Если вы хотите избежать этого, то:
select * from post where content <> '' and replace(content, 'q', '') = ''
;
Это регулярное выражение означает, что строка начинается с q
и содержит только 1 или более q
символов до конца строки
Протестируйте его на SQLize.online
Ответ №2:
Попробуйте использовать это ^q (?![s]) $ регулярное выражение.
Приведенное выше регулярное выражение будет проверять наличие строки, начинающейся с q и без пробела.
Ответ №3:
Вам действительно не нужно регулярное выражение для этого. Строковые функции, вероятно, будут более эффективными. Вы можете заменить все «q» на пустые строки и убедиться, что результирующая строка пуста:
Обратите внимание, что это также допускает пустую строку. Если вы хотите избежать этого, то: