PostgreSQL中INET类型数组字段的正确插入语法是什么?
PostgreSQL中INET数组字段的正确插入语法
你创建了包含INET类型数组的表:
CREATE TABLE nettable (id integer, source inet[], destination inet[]);
插入数据时尝试了两种语法均报错:
第一种:
INSERT INTO nettable (id, source, destination) VALUES (1, [ ’10.10.10.0/24’ ], [ ‘1.2.3.4/32’ ]);
第二种:
INSERT INTO nettable (id, source, destination) VALUES (1,’{"10.10.10.0/24"}’,’{"1.2.3.4/32"}’);
错误原因
- 第一种写法使用的
[ ... ]不是PostgreSQL支持的数组语法,数据库识别不了这种格式。 - 两种写法都用了中文弯引号(’‘),这属于无效语法字符,数据库会判定为语法错误。
正确的插入语法
方法1:使用ARRAY构造函数
这是PostgreSQL数组最常用的写法,数据库可自动推断元素类型,也可显式指定:
-- 自动推断类型 INSERT INTO nettable (id, source, destination) VALUES (1, ARRAY['10.10.10.0/24'], ARRAY['1.2.3.4/32']); -- 显式指定inet数组类型(可选) INSERT INTO nettable (id, source, destination) VALUES (1, ARRAY['10.10.10.0/24']::inet[], ARRAY['1.2.3.4/32']::inet[]);
方法2:使用字符串形式的数组
用英文单引号包裹数组整体,内部元素用英文双引号分隔(单元素数组也需保持该格式):
INSERT INTO nettable (id, source, destination) VALUES (1, '{"10.10.10.0/24"}', '{"1.2.3.4/32"}');
内容的提问来源于stack exchange,提问作者Empusas
相关产品推荐
相关产品推荐

