MySQL REGEXP没有空格没有数字

时间:2011-08-08 20:59:08

标签: mysql regex

我试图只返回colA和colB不包含数字或空格的那些行

到目前为止,这是我的代码。

SELECT * FROM table_name WHERE colA REGEXP '[^0-9^\W]' AND colB REGEXP '[^0-9^\W]'

给出数据集

   colA        colB
---------- ----------
     test |  testB
      33  |  text    <- this is not returned
     blah |  0123A   <- this is returned

我假设我的问题与我的正则表达式有关...请帮忙吗?

5 个答案:

答案 0 :(得分:5)

你的表达式不起作用,因为:33是数字,你正在寻找任何非小数,非空白字符。所以它不包括结果中的那一行。

尝试:

SELECT * FROM table_name WHERE colA NOT REGEXP '[0-9[:space:]]' AND colB NOT REGEXP '[0-9[:space:]]'

ETA:是的,忘记了\无论什么都不行

答案 1 :(得分:1)

id建议改为使用否定:not regexp '[0-9[:space:]]'

SELECT * FROM table_name WHERE colA NOT REGEXP '[0-9[:space:]]' AND colB NOT REGEXP '[0-9[:space:]]'

答案 2 :(得分:1)

MySQL大多数情况下不支持\whatever类型转义。如果你想要空格,你需要使用[[:space:]],这是POSIX语法。有关regex man page here的详细信息。

答案 3 :(得分:1)

您可以尝试的另一个正则表达式如下:regexp '[^0-9\s]'

答案 4 :(得分:0)

未经测试但试一试

regexp '^[^0-9 ]+$'