2012-02-13 23 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

相關問題