我查看了
上的文档 https://mariadb.com/kb/en/library/regular-expressions-overview/
https://mariadb.com/kb/en/library/pcre/
https://mariadb.com/kb/en/library/not-regexp/
我尝试过
... address_one not rlike '\d';
15707 rows in set (0.52 sec)
... address_one not regexp '\d';
15707 rows in set (0.56 sec)
... address_one !regexp '\d';
ERROR 1064 (42000): You have an error in your SQL syntax
... not(address_one regexp '\d');
15707 rows in set (0.55 sec)
我想找到没有 位的所有行。 ^\d
将不起作用,因为该行将仅与行开头的数字匹配,而[^\d]
将与诸如'a'之类的任何字母匹配。似乎并没有否定结果。
答案 0 :(得分:0)
没关系。我用双反斜杠address_one not regexp '\\d'
修复了它。在documentation page上甚至找不到\d
。
答案 1 :(得分:0)
MariaDB 10.0和Mysql 8.0具有\d
(和类似的动物)。
所有(?)具有[0-9]
和[[:digit:]]
。
要否定整个表达式:
x NOT RLIKE '[0-9]'
x NOT REGEXP '[0-9]'
NOT (x RLIKE '[0-9]')
NOT (x REGEXP '[0-9]')
用^
取反正则表达式并不容易。查找没有数字的行等同于查找只有非数字的行:
x RLIKE '^[^0-9]*$'