只爲你的情況(給前兩位),你可以使用substr
挑選從對應於(長度(以||「的頭前兩位」) - 長(從||」 「)2)。然後將它們與用戶輸入進行比較以找到範圍。
使用此查詢,您可以獲取包含用戶發送的數字的所有範圍。
的作爲一個例子使用的用戶輸入,結果將是範圍含有數等'12%':
select from, to, range from
(select Integer(substr(from,1,2)) substr_from,
Integer(substr(to,1,length(to||'')-length(from||'')+2) substr_to,
from, to, range
from your_table)
where (substr_from<=12 and substr_to>=12)
or (from<=12 and to>=12)
下面表將顯示的from, to, substr_from, substr_to
1 100 1 100
101 200 10 20
201 300 20 30
...................
901 1000 90 100
1001 1100 10 11
1101 1200 11 12
...................
9901 10000 99 100
10001 10100 10 10
10101 10200 10 10
...................
的值由於輸入是12,這些範圍將被返回:1-100,101-200,1101-1200,1201-1300 ...
當然這不會工作如果給定的數字在中間。
用戶是否可以選擇只發送*號碼中間的最後一個數字或數字? –
你將需要縮小一點。你不可能期望返回所有涉及10的可能性,因爲這將是無限的。另外,如果您不在某一列中存儲要查找的值,您如何將它們與範圍相關聯?或者是所有的範圍只是100塊?如果是這種情況,請跳過SQL查詢,然後提出一個算法來計算範圍。 –
它只是從你發送的字符開始?在任何情況下,如果您將列轉換爲varchar,則可以使用'LIKE'。在你的例子中,'LIKE '10%''匹配'10','101'等。 – Andrew