PostgreSQL и мрежовите оператори
Работил съм по няколко проекта, при които изискване беше използването на PostgreSQL и наистина започнах да го харесвам, макар отначалото да ми се стори зле. Доста функционалности, които са много полезни в различни случаи. Една от тях е мрежовия оператор <<=
is contained within or equals – inet ’192.168.1/24′ <<= inet ’192.168.1/24′
По този начин може да се провери дали дадено IP принадлежи към конкретна мрежа. Простичко, нали! Ноза жалост на мен ми трябваше да взема адреси, които не принадлежат към конкретна мрежа . Е, няма го обратния оператор – поне аз не намерих такъв. Така че това, което направих е:
SELECT COUNT(*) FROM ips WHERE CASE WHEN ip <<= inet '192.168.1/24' THEN false ELSE true END