Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将Postgres IPv6列文本字段转换为JSON_Sql_Postgresql - Fatal编程技术网

Sql 将Postgres IPv6列文本字段转换为JSON

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

正在尝试将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 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