我试图只返回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
我假设我的问题与我的正则表达式有关...请帮忙吗?
答案 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 ]+$'