2014-11-04 62 views
0

我在我的mysql表中有一個ref字段,其​​中的值看起來像'0-0-at-3267-201411041356'。第一部分(0-0-3267-)的長度和值有所不同,第二部分(201411041356)是引用創建日期/時間的日期/時間。檢查此代碼的所有內容是否在特定日期/時間段內(例如201409010000和201508312359之間)。使用LIKE查詢MySQL範圍

通常情況下,我可以簡單地分解數據然後測量,但對於此實例,它會使它太笨重了。因此,我想要做的就是使用LIKE功能在我的查詢,像這樣LIKE '%201411041356'但我想與><符號使用它,所以完整的查詢看起來像SELECT * FROM my_table WHERE ref LIKE > '%201409010000' AND ref LIKE < '%201508312359'

任何想法將是最歡迎!順便說一句,這一直是這種數據已被存儲的方式,並有很多它,所以改變它不是一種選擇。

+0

爲什麼你會需要一個一樣,如果你正在使用以上不足? – 2014-11-04 15:27:10

+0

因爲我還需要通配符,因爲數據的第一部分沒有修復。 – 2014-11-04 15:37:22

回答

0

你能之間的一個子使用,所以像:

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

哇,這是一個簡單但有效的解決方案,並且完美地工作。謝謝! – 2014-11-04 15:45:42

+0

有時簡單是前進的方向 – gabe3886 2014-11-04 15:50:25

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

對於減去最後12個字符會更好。

0

因爲你寫的第一部分可以有不同的lenght所以,你必須帶子從年底開始。

所以你quwery可能看起來像:

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

如果你只是想通過日期使用測量:

left(right(ref, 12), 8) 
+0

謝謝。你可以在查詢示例中顯示這個,所以我可以看到你在這裏做什麼? – 2014-11-04 15:38:12

+0

select * from my_table where left(right(ref,12),8)BETWEEN'20141104'AND'20141108' http://sqlfiddle.com/#!2/8b8154 – 2014-11-04 15:46:52