2010-10-15 2 views
0

У меня есть поле VARCHAR со следующими данными:MySQL: диапазон поиска строк с косой черты

Интерфейс
Gig1/0/1
Gig1/0/3
Gig1/0/5
Gig1/0/10
Gig1/1/11

Я пытаюсь выполнить поиск (МЕЖДУ).

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

+0

Они не являются регулярными целыми числами; они струны. Подумайте об этом как «GigB/A/B» и «GigB/A/F», а не «GigB/A/BA» между ними? Ага! – VoteyDisciple

+0

Этот запрос возвратил Gig1/0/1, Gig1/0/3, Gig1/0/5 и Gig1/0/10. Gig1/0/10 не должно быть там. Поле является varchar (строка). – Rick

ответ

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

+0

... предполагая, что у меня было больше записей, таких как Gig1/1/10, Gig1/1/5 ... Как бы я их искал? – Rick

+1

, возможно, используя "select substring_index (имя поля, '/', - 2) как v из tablename, где v между '0/1' и '1/5'", так как это будет выбирать 1/10,1/15 и т. Д. – Richard

Смежные вопросы