MySQL - 需要查找其中没有句号的记录

MySQL - need to find records without a period in them

我去过 MySQL 网站上的正则表达式页面,但无法正确查询。我有一个链接列表,我想找到不包含句号的无效链接。这是我的代码不起作用:

select * from `links` where (url REGEXP '[^\.]')

它返回整个数据库中的所有行。我只是想让它显示 'url' 不包含句点的行。感谢您的帮助!

SELECT c1 FROM t1 WHERE c1 NOT LIKE '%.%'

在这里使用 regexp 似乎有些矫枉过正。一个简单的 like 运算符就可以解决问题:

SELECT * FROM `links` WHERE url NOT LIKE '%.%

编辑:

话虽如此,如果你真的想否定regexp,就用not regexp:

SELECT * FROM `links` WHERE url NOT REGEXP '[\.]';

您的正则表达式匹配任何包含 不是 句点的字符的内容。因此,如果它包含 foo.bar,则正则表达式匹配 f 并成功。你可以这样做:

WHERE url REGEXP '^[^.]*$'

锚点和重复运算符检查每个字符不是句号。或者你可以这样做:

WHERE LOCATE(url, '.') = 0

顺便说一句,当 . 在正则表达式中的 [] 内时,您不需要转义 .