如何:从MYSQL文本字段中选择仅使用REGEXP键入以89开头的数字?

时间:2012-02-13 19:30:26

标签: mysql regex select

我已经尝试过多种方式从文本字段中选择以89开头的数字。我在前2个数字之后没有固定长度。

如何才能正常工作,而不是在结果中获得像389xxxxxx这样的数字。最小长度应至少为8个字符。

谢谢!

3 个答案:

答案 0 :(得分: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,}$"

编辑:Tim似乎编辑了他的答案,我提到了,所以我编辑了我的答案,将他的代码包含在字符类型列中。

答案 1 :(得分: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.

答案 2 :(得分:0)

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