2010-10-15 46 views
0

串的搜索範圍我有下列數據的varchar字段:MySQL的:用斜線

接口
Gig1/0/1
Gig1/0/3
Gig1/0/5
Gig1/0/10
Gig1/1/11

我正在嘗試搜索(BETWEEN)。

Select * from test1 where Interface Between "Gig1/0/1" and "Gig1/0/5" 

返回所有除記錄Gig1/1月11日

+0

您的查詢是否也返回Gig1/0/10?假設常規整數不是1/0/1和1/0/5之間。 – stark 2010-10-15 12:55:29

+0

他們不是常規的整數;他們是字符串。把它看作'GigB/A/B'和'GigB/A/F'不是它們之間的'GigB/A/BA'?是的! – VoteyDisciple 2010-10-15 12:57:36

+0

該查詢返回了Gig1/0/1,Gig1/0/3,Gig1/0/5和Gig1/0/10。 Gig1/0/10不應該在那裏。該字段是一個varchar(字符串)。 – Rick 2010-10-15 13:00:05

回答

1

怎麼樣使用SUBSTRING_INDEX功能?

select substring_index(fieldname,'/',-1) as v from tablename where v between 1 and 5 
+0

工作原理:從test1中選擇接口,其中substring_index(接口,'/', - 1)介於1和5之間,但僅限於在最右斜線之前搜索最後的數字。無法搜索Gig1/1/11。 – Rick 2010-10-15 13:10:45

+0

...假設我有更多的記錄,比如Gig1/1/10,Gig1/1/5 ...我會如何搜索這些內容? – Rick 2010-10-15 13:12:02

+1

也許使用「select substring_index(fieldname,'/', - 2)作爲v從表名'其中v'在'0/1'和'1/5'」之間,因爲這將選擇1/10,1/15等。 – Richard 2010-10-15 13:26:06