是否可以在BETWEEN语句中使用LIKE语句?

时间:2015-12-10 18:32:02

标签: mysql select between sql-like

这就是我试图在特定范围内列出一堆报告的事情,棘手的部分是我们有12种不同类型的报告,所以我需要能够列出该范围的每个报告。

让我用一个例子解释一下:

type 1 =RR10000
type 2 =TT10000
type 3 =HH10000

如果我列出10000到10005:

RR10001
TT10001
HH10001
RR10002
TT10002
HH10002
RR10003
TT10003
HH10003
RR10004
TT10004
HH10004
RR10005
TT10005
HH10005

有没有办法做到这一点?任何暗示都会受到赞赏。

3 个答案:

答案 0 :(得分:0)

不,但你可以进行正则表达式匹配,这里有参考:http://dev.mysql.com/doc/refman/5.7/en/regexp.html

但是,如果你的情况那么简单,那么像@ MarcB的答案就足够了(也是为了把它写出来)。

答案 1 :(得分:0)

假设您的类型总是2个字符后跟数字,那么您只需提取数字并对其进行between

... WHERE SUBSTR(yourfield, 2) BETWEEN 10001 AND 10005
      AND SUSBSTR(yourfield, 0, 2) IN ('RR', 'HH', 'TT')

不会特别高效,因为你不能使用索引来做这类事情。如果你需要在"大"记录数量,考虑将此类型字段拆分为复合字段(字符,数字),然后您可以在数字字段上轻松执行between

答案 2 :(得分:0)

您可以使用RLIKE这是一个正则表达式匹配。

SELECT
    *
FROM
    SomeTable
WHERE
    someColumn LIKE '^(RR|TT|HH)1000[0-5]$'
相关问题