我正在尝试写一个MySQL语句,查找并返回一行中包含2个或更多空格的图书注册。
下面的语句是错误的。
SELECT * FROM book WHERE titles REGEXP '[:space]{2,}';
既然2个空格已经满足你的条件,你真的不需要检查是否有超过2个。此外,如果需要匹配常规ASCII空间(十进制代码32),则不需要REGEXP
操作符,可以安全地使用
SELECT * FROM book WHERE titles LIKE '% %';
LIKE
是首选在所有情况下,你可以使用它而不是REGEXP
(参见MySQL | REGEXP VS Like)
当您需要匹配大量的空白符号时,您可以使用WHERE titles REGEXP '[[:space:]]{2}'
(它将匹配[ trnvf]
),如果您只计划匹配制表符和空格,则使用WHERE titles REGEXP '[[:blank:]]{2}'
。有关详细信息,请参见POSIX括号表达式。
注意,[:class_name:]
只能在字符类中使用(即在另一对[...]
中使用),否则,它们将无法被识别。
你的POSIX类必须是,
SELECT * FROM book WHERE titles REGEXP '[[:space:]]{2,}';
不需要,
SELECT * FROM book WHERE titles REGEXP '[[:space:]]{2}';
您也可以使用[[:blank:]]
SELECT * FROM book WHERE titles REGEXP '[[:blank:]]{2}';
如果您只是指空格字符:REGEXP ' '
。或者你可以使用LIKE "% %"
,它会更快。(注:其中有2个空格)
blank
和space
请参见http://dev.mysql.com/doc/refman/5.6/en/regexp.html