过滤器字符串仅包含 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
符号直到字符串结尾
上测试
尝试使用这个 ^q+(?![\s])+$ 正则表达式。
以上 RegExp 将检查以 q 开头且不包含 space 的字符串。
你真的不需要正则表达式。字符串函数可能更有效。您可以用空字符串替换所有“q”,并确保生成的字符串为空:
select * from post where replace(content, 'q', '') = ''
请注意,这也允许空字符串。如果你想避免这种情况,那么:
select * from post where content <> '' and replace(content, 'q', '') = ''
我在 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
符号直到字符串结尾
尝试使用这个 ^q+(?![\s])+$ 正则表达式。
以上 RegExp 将检查以 q 开头且不包含 space 的字符串。
你真的不需要正则表达式。字符串函数可能更有效。您可以用空字符串替换所有“q”,并确保生成的字符串为空:
select * from post where replace(content, 'q', '') = ''
请注意,这也允许空字符串。如果你想避免这种情况,那么:
select * from post where content <> '' and replace(content, 'q', '') = ''