Sql 将Postgres IPv6列文本字段转换为JSON
正在尝试将Postgres中的文本字段转换为JSON字段。该字段是具有多个分号的IPv6地址,例如:“14:eth1:vTA1:::4:” 正在尝试运行smth,如:Sql 将Postgres IPv6列文本字段转换为JSON,sql,postgresql,Sql,Postgresql,正在尝试将Postgres中的文本字段转换为JSON字段。该字段是具有多个分号的IPv6地址,例如:“14:eth1:vTA1:::4:” 正在尝试运行smth,如: ALTER TABLE data ALTER COLUMN ipv6 TYPE jsonb USING ipv6::jsonb; 结果: 无法将文本字段转换为JSON。详细信息:json类型的输入语法无效 详细信息:预期输入结束,但找到“:” 有没有关于如何正确操作的线索?使用to_jsonb而不是::jsonb ALTER T
ALTER TABLE data ALTER COLUMN ipv6 TYPE jsonb USING ipv6::jsonb;
结果:
无法将文本字段转换为JSON。详细信息:json类型的输入语法无效
详细信息:预期输入结束,但找到“:”
有没有关于如何正确操作的线索?使用to_jsonb而不是::jsonb
ALTER TABLE data ALTER COLUMN ipv6 TYPE jsonb USING to_jsonb(ipv6);
有没有理由不使用INET类型?它是专门为存储和操作ipv4/ipv6地址而设计的。如果您确实希望它是JSON或JSONB,则必须确保它是有效的JSON。您希望它作为字符串还是如何使用?不幸的是,它并不总是一个有效的JSON。例如,它可以类似于“162:eth0:service chain ta:::4”。作为
text
存储时没有出现问题。它必须存储为jsonb
。您希望jsonb文档是什么样子?请您编辑您的问题以提供一个示例,好吗?您是否只希望它是一个有效的jsonb
字符串?@0leg:如果格式正确(正确引用字符串),该字符串可以是有效的json。也就是说,您的字符串格式不是有效的ipv6,最好不要将其称为ipv6