Re: inet types and LIKE doesn't work as expected - Mailing list pgsql-general

From Allan Engelhardt
Subject Re: inet types and LIKE doesn't work as expected
Date
Msg-id 3BAA0188.7346384E@cybaea.com
Whole thread Raw
List pgsql-general
Phil Mayers wrote:

> Try this:
>
> hdbdev=> create table ips ( ip inet, ip_txt varchar(15) );
> hdbdev=> insert into ips (ip,ip_txt) values ('192.168.1.1','192.168.1.1');
> hdbdev=> select * from ips where ip like '192.168.1.1';
>  ip | ip_txt
> ----+--------
> (0 rows)
>
> hdbdev=> select * from ips where ip_txt like '192.168.1.1';
>      ip      |   ip_txt
> -------------+-------------
>  192.168.1.1 | 192.168.1.1
> (1 row)
>
> That seems inconsistent?

The default text conversion for the inet type includes a mask:

test=# select text(ip) from ips;
      text
----------------
 192.168.1.1/32
(1 row)

so

 select * from ips where ip like '192.168.1.1%';

works as expected.

The joys of semanically rich data types :-)


Hope this helps a little.


Allan.

pgsql-general by date:

Previous
From: "Tille, Andreas"
Date:
Subject: Re: Performance question (stripped down the problem)
Next
From: Justin Clift
Date:
Subject: Re: Performance question (stripped down the problem)