2012-02-13 25 views

回答

0
SELECT * FROM mytable WHERE mycolumn REGEXP "(^|[^[:digit:]])89[[:digit:]]{6,}"; 

会做到这一点:

(    # Either match 
^    # the start of the string 
|    # or 
[^[:digit:]] # any character except a digit 
)    # End of alternation. 
89    # Match 89 
[[:digit:]]{6,} # plus at least 6 more digits. 
+0

嗯,它不工作,它返回0行。 – 2012-02-13 19:41:52

+0

那么这个数字不是该列的唯一内容? – 2012-02-13 20:45:06

+0

@CosminPanait:我修改了正则表达式。它现在应该符合你的要求。 – 2012-02-13 20:55:21

2

如果你的列是整数,那么你也许可以这样做:

select * from my_table where cast(int_column) as char) like '89______%' 

(这是6个下划线的百分比字符前)

如果是字符值,那么你可以这样做:

SELECT * FROM mytable WHERE char_column REGEXP "^89[[:digit:]]{6,}$" 

如果列是数字与小数和你只想要整数值,那么你需要做的是这样

SELECT * FROM mytable WHERE cast(numeric_column as char) REGEXP "^89[[:digit:]]{6,}$" 

编辑:看来蒂姆已经编辑他的回答,我所提到的所以我编辑了我的答案,以包含他的字符类型列的代码。

0
SELECT * FROM foo WHERE bar REGEXP "([^0-9]89[0-9]*)|(^89[0-9]*)" 
+0

这很好,但我只需要长度大于4或5个字符的数字,谢谢您的回复。 – 2012-02-13 19:49:26

相关问题