LINUX.ORG.RU

MySql запрос


0

0

Привет ребята.

Есть поле ip таблицы ranges с типом varchar(100), в котором находится примерно такие данные: 192.168.0.1-100
Мне нужно запросом проверить входит ли конкретным айпишник: 192.168.0.99 в тот диапазон, который указан в таблице. Если входит, то вывест запись. Делаю вот так:

SELECT * FROM ranges WHERE ip REGEXP '192.168.0.[выражение]';

Помогите пожалуйста написать регуляр(или может как-то подругому), который проверял бы соответствует ли последняя цифра айпишника (99) какому-то из диапазонов поля ip.
Мускуль 4.1.22

Зарание очень благодарен.

★★★★★

Ответил в icq, но все-таки. при таком раскладе дизайн базы кривой, таки лучше 2 поля с верхним и нижним ипом хранить интами. как сейчас, если вместо -100 писать -192.168.0.100, то запрос такой:

select * from t2 where inet_aton('192.168.1.250') between inet_aton(substr(a1,1,instr(a1,'-')-1)) and inet_aton(substr(a1,instr(a1,'-')+1));

borisych ★★★★★
()

открою страшную тайну, IPv4 максимум может занимать VARCHAR(4) ... каждый ip можно хранить в виде символа 1-255 (%

phasma ★☆
()
Ответ на: комментарий от phasma

>открою страшную тайну

Тоже открою страшную тайну: типы полей менять нельзя. Нужно как-то выкручиваться из того, что есть, так как эту БД я не создавал, и эта БД еще много чем юзается.

2 borisych, большое спасибо! Все работает.

iron ★★★★★
() автор топика

> Мускуль 4.1.22

А вот это диагноз :-) Если бы была нормальная БД (пусть даже постгрес), можно было сваять триггер, который бы заливал нормальные данные в новую таблицу на основании старой, после чего по новой все искалось бы легко и непринужденно :-)

no-dashi ★★★★★
()
Ответ на: комментарий от no-dashi

>А вот это диагноз :-)

А разве на 5-м мускуле такое не реализовать? o0

iron ★★★★★
() автор топика
Ответ на: комментарий от no-dashi

> Если бы была нормальная БД

нормальная бд это что? типа оракел что ли?

anonymous
()
Ответ на: комментарий от no-dashi

мда, 4.1.22 - старовата, но новая mysql поддерживает триггеры

AndreyKl ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.