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
顺便说一句,当 .
在正则表达式中的 []
内时,您不需要转义 .
。
我去过 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
顺便说一句,当 .
在正则表达式中的 []
内时,您不需要转义 .
。