MYSQL查找包含7个以上数字的条目

时间:2017-06-19 09:39:24

标签: mysql

我需要在我的一个mysql表中找到包含7个以上数字的条目但这些数字是用字母或其他任何东西分隔的。

我所拥有的是我用来查找dsc123456789等条目的一小段代码:

select * from crawl where title  regexp '[0-9]{7}'

如何找到dsc-123-456_78B9等条目?我尝试了不同的事情但到目前为止没有成功。

由于

1 个答案:

答案 0 :(得分:2)

您可以使用以下解决方案:

SELECT * 
FROM crawl
WHERE title REGEXP '(([^[:digit:]])?[[:digit:]]){8,}';

为什么答案的原始查询不起作用?

-- this query doesn't work!
SELECT *  
FROM crawl  
WHERE title REGEXP '\d([^\d]?\d){7,}'

MySQL不能使用\d(数字)等字符组。所以查询每次都失败。在PHP和其他语言中,正则表达式如下所示:

\d([^\d]?\d){7,}

但是在MySQL上这是无效的。所以你必须使用MySQL的character classes来解决这个问题:

(([^[:digit:]])?[[:digit:]]){8,}
  

提示:请确保使用{8}{8,}代替{7},因为您要查找超过7个数字/位的所有条目。< / p>