строка фильтра содержит только q в mysql

#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» на пустые строки и убедиться, что результирующая строка пуста:


Обратите внимание, что это также допускает пустую строку. Если вы хотите избежать этого, то: