Re: CIdr query qestion - Mailing list pgsql-sql

From Michael Fuhr
Subject Re: CIdr query qestion
Date
Msg-id 20070710091643.GA48320@winnie.fuhr.org
Whole thread Raw
In response to CIdr query qestion  (Michele Petrazzo - Unipex srl <michele.petrazzo@unipex.it>)
List pgsql-sql
On Tue, Jul 10, 2007 at 09:36:49AM +0200, Michele Petrazzo - Unipex srl wrote:
> A question about cidr query. I'm tring to use the various cidr functions
> to exclude a A sub class, but I don't understand how use it:
> 
> SELECT count(ip_addr), ip_addr from wi_log_network where ip_addr !=
> network('10.10.0.0/16', 16) group by (ip_addr);
> 
> it don't exclude the 10.10 ! Tried also the abbr or set_masklen keyword,
> but the same. How do it?

Please post the actual query you're running.  The above fails with

ERROR:  function network("unknown", integer) does not exist

Does the following help?

CREATE TABLE test (id integer PRIMARY KEY, ip_addr inet NOT NULL);
INSERT INTO test (id, ip_addr) VALUES (1, '10.2.3.4');
INSERT INTO test (id, ip_addr) VALUES (2, '10.10.5.6');

SELECT id,      ip_addr,      set_masklen(ip_addr, 16),      network(set_masklen(ip_addr, 16)),
network(set_masklen(ip_addr,16)) = '10.10.0.0/16',      '10.10.0.0/16'::cidr >> ip_addr,      NOT '10.10.0.0/16'::cidr
>>ip_addr FROM test;
 
id |  ip_addr  | set_masklen  |   network    | ?column? | ?column? | ?column? 
----+-----------+--------------+--------------+----------+----------+---------- 1 | 10.2.3.4  | 10.2.3.4/16  |
10.2.0.0/16 | f        | f        | t 2 | 10.10.5.6 | 10.10.5.6/16 | 10.10.0.0/16 | t        | t        | f
 
(2 rows)

> P.s. Tried the >>, but it only include the values that I want to
> exclude! (And I don't found how to do the opposite!)

You can use NOT to negate a boolean expression; see above.

-- 
Michael Fuhr


pgsql-sql by date:

Previous
From: "Jesper K. Pedersen"
Date:
Subject: Re: CIdr query qestion
Next
From: Peter Eisentraut
Date:
Subject: Database system identifier from SQL