2010-10-15 47 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