要找到具有包含'06-'
(字符0和6,接着由短劃線一個case
列值的行...
一種選擇是使用LIKE比較運算符:
SELECT ...
FROM clients t
WHERE t.case LIKE '%06-%'
ORDER BY ...
百分號符號是LIKE比較中的通配符,匹配任意數量的字符(零個,一個或多個)。
MySQL需要評估的條件,每排在表中。 MySQL無法利用索引範圍掃描操作。
SELECT ...
FROM clients t
WHERE t.case LIKE '%15-%'
OR t.case LIKE '%16-%'
ORDER BY ...
這將評估爲true,其中包括三個字符'15-'
或'16-'
序列的任何值。
如果case
列中的值有更多標準格式,其值始終以6個字符表示日期'mmddyy-nnnnn'
,並且您只想匹配第5到第7個字符,則可以使用下劃線通配符匹配例如任意一個字符(在LIKE比較)...使用四個下劃線
t.case LIKE '____16-%'
或者你可以使用一個SUBSTR
功能三個大字從case
值提取,並進行相等比較...
SUBSTR(t.case,5,3) = '15-'
SUBSTR(t.case,5,3) IN ('15-','16-')
也可以使用REGEXP
比較代替LIKE
比較。
在性能方面,上述所有方法都將需要通過每一行表中的曲柄,評價比較條件。
如果該日期值作爲一個單獨的列存儲爲DATE數據類型,並且存在一個以該列作爲主要列的索引,那麼MySQL可以有效地使用範圍掃描操作。 ..
WHERE t.casedate >= '2015-01-01'
AND t.casedate < '2017-01-01'