如何在Postgres中的inet字段上使用LIKE

时间:2013-04-24 11:22:38

标签: postgresql sql-like inet

我需要执行以下查询:

SELECT * FROM users WHERE ip LIKE '88.99.%';

问题是inet数据类型似乎不支持通配符(至少不是我在前面的查询中使用它们的方式)。

我想知道的是,在指定LIKE过滤器之前将字段转换为字符串是否是明智之举? (另一方面,即使方法本身有效,这也可能会减慢整个查询的速度。)

2 个答案:

答案 0 :(得分:23)

使用子网运算符进行此类查询。 '88.99.0.0/16'应该这样做:

SELECT * FROM users WHERE ip << inet '88.99.0.0/16';

答案 1 :(得分:7)

如果您想进行字符串比较,另一个对我有用的选项是:

SELECT * FROM users WHERE TEXT(ip) LIKE '88.99.%';

虽然效率低于&#34; How to use LIKE on inet field in Postgres&#34;。

参考:https://www.postgresql.org/docs/8.2/static/functions-net.html