使用LIKE查询MySQL范围

时间:2014-11-04 15:18:50

标签: php mysql sql range

我的mysql表中有一个ref字段,其中包含的值类似于' 0-0-at-3267-201411041356'。第一部分(0-0-at-3267-)的长度和值不同,第二部分(201411041356)是引用创建日期/时间的日期/时间。检查此代码用于的所有内容,以查看它是否属于某个日期/时间段,例如201409010000和201508312359之间。

通常情况下,我可以简单地分解数据然后进行测量,但对于这个实例,它会使它太笨重。所以我想要做的是在我的查询中使用LIKE函数,如LIKE '%201411041356',但我想将其与><符号一起使用,因此完整查询看起来像SELECT * FROM my_table WHERE ref LIKE > '%201409010000' AND ref LIKE < '%201508312359'

任何想法都会受到欢迎!顺便说一句,这一直是这些数据存储的方式,而且有很多这样的数据,所以改变它不是一种选择。

4 个答案:

答案 0 :(得分:0)

SELECT *
FROM my_table 
WHERE SUBSTRING(ref,-12) BETWEEN '201409010000' AND '201508312359'` 

可以更好地减去最后12个字符。

答案 1 :(得分:0)

您可以在子字符串之间使用,例如:

SELECT * FROM my_table WHERE SUBSTRING(ref,-12) BETWEEN '201409010000' AND '201508312359'

答案 2 :(得分:0)

因为您写道第一部分可能有不同的长度吗?您从末尾开始有条带子字符串。

所以您的查询可能如下:

SELECT * FROM table 
WHERE
SUBSTRING('ref', -12) > $from
AND 
SUBSTRING('ref', -12) < $to

答案 3 :(得分:0)

如果您只想按日期来衡量:

left(right(ref, 12), 8)