我已经尝试过多种方式从文本字段中选择以89开头的数字。我在前2个数字之后没有固定长度。
如何才能正常工作,而不是在结果中获得像389xxxxxx这样的数字。最小长度应至少为8个字符。
谢谢!
答案 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]*)"