2010-09-14 47 views
5

开始我需要编写使用MYSQL REGEXP一个查询,会发现我有一定的柱11或12或等。我知道我可以使用LIKE或LEFT(开始行编号#### ,2)但想使用REGEXP选项。我的数据存储为110001,122122,130013a等MySQL的REGEXP对于与

编辑1:

为了使它更清楚,我想表达

SELECT * FROM table WHERE column LIKE '11%' or column LIKE '12%' or column LIKE '30%'"  

与REGEXP

谢谢!

+3

如果值以11或12开头,就像总是比REGEXP有更好的表现。不好的做法,代码你喜欢什么,什么VS表现最好... – 2010-09-14 20:39:00

+0

你说的'11或12或等。“是什么意思?你的意思是什么开始用两位数字?凡是从1开始,接着另一个数字?任何两个数字只是零?别的东西吗? – 2010-09-14 20:39:36

+0

哇,男人你们快。我的意思是说,我只需要有列1行有11或12,或32开始,或者说,我扔在2个位数的任意组合!它感谢 – pistolshrimp 2010-09-14 20:43:56

回答

15

,匹配以任意两个数字开始行,你可以使用:

SELECT * 
FROM yourtable 
WHERE yourcolumn REGEXP '^[0-9][0-9]'; 

如果你只想让行开始111230那么你可以使用这个:

SELECT * 
FROM yourtable 
WHERE yourcolumn REGEXP '^(11|12|30)'; 

这将无法在列上使用索引,因此它可能比使用LIKE更慢。

+0

马克,谢谢但这不是我要找的。我需要像“'SELECT * FROM表WHERE列LIKE '11%'或像'12%'这样的列或像'30%'这样的列'用REGEXP表示。 – pistolshrimp 2010-09-15 00:19:26

+0

马克,谢谢。我觉得自己像个白痴:) – pistolshrimp 2010-09-15 00:48:36