过滤器字符串仅包含 mysql 中的 q

filter string only contains q in mysql

我在 mysql 查询中需要帮助,我写了这个查询

select * from post where content REGEXP '^q'

此查询有效,但它还在过滤器中包含 spaces,如果有任何内容字符串,如 "qqqqqq""qqqq""qqq""qq""q" 对于这个字符串,它应该只过滤,现在如果我有像 "qqqq qq" 这样的字符串会发生什么然后它也会给我结果,它不应该考虑space,谁能帮我解决这个问题?

您可以像接下来那样修复您的正则表达式:

select * from post where content REGEXP '^q+$';

这个正则表达式表示字符串以 q 开头并且仅包含 1 个或多个 q 符号直到字符串结尾

SQLize.online

上测试

尝试使用这个 ^q+(?![\s])+$ 正则表达式。

以上 RegExp 将检查以 q 开头且不包含 space 的字符串。

你真的不需要正则表达式。字符串函数可能更有效。您可以用空字符串替换所有“q”,并确保生成的字符串为空:

select * from post where replace(content, 'q', '') = ''

请注意,这也允许空字符串。如果你想避免这种情况,那么:

select * from post where content <> '' and replace(content, 'q', '') = ''