我的数据库中有一个名为mgmt的列,它是inet类型的
我想这样做:
select * from source
where mgmt LIKE inet('10.208.6%')
但这会给出错误"error:类型inet的无效输入语法:">
知道如何将LIKE子句用于inet类型吗?
第一个想法:
铸造成文本然后尝试:
WHERE mgmt::text LIKE '10.208.6%'
第二个想法:
试试这个
WHERE mgmt BETWEEN inet('10.208.60.0') AND inet('10.208.69.255')
(或者,更准确地说,因为您的通配符同时涵盖6
和60
s(
WHERE (mgmt BETWEEN inet('10.208.60.0') AND inet('10.208.69.255'))
OR (mgmt BETWEEN inet('10.208.6.0') AND inet('10.208.6.255'))
第三个想法:
如果您只想检查6
范围,请使用<<
运算符检查IP范围:
WHERE mgmt << inet('10.208.6/24')
我将使用<<
运算符执行inet
操作:
postgres=# SELECT '192.168.1.1'::inet << '192.168.1.0/24'::inet;
?column?
----------
t
(1 row)
postgres=# SELECT '192.168.10.1'::inet << '192.168.1.0/24'::inet;
?column?
----------
f
(1 row)
但是,如果出于某种原因您真的必须使用ILIKE
,您可以转换为文本:
postgres=# SELECT text('192.168.10.1'::inet) ilike '192.168.1%';
?column?
----------
t
(1 row)
更多信息可在文件中找到