首页 > 解决方案 > postgresql中的json-ize字符串列

问题描述

我有以下数据结构:

create table test (tags VARCHAR, tags_json VARCHAR);

insert into test (tags, tags_json)
values ('A B', '["A", "B"]')

我想将该列转换tags为 JSON 列。如果我用tags_json专栏来做这件事很容易:

select tags_json::JSON from test

但是当我使用该tags列运行它时,

select tags::JSON from test

我明白了

SQL Error [22P02]: ERROR: invalid input syntax for type json

如何将列转换为tagspostgresql 中的 JSON 列?

标签: jsonpostgresql

解决方案


您需要首先将“纯文本”转换为数组,然后可以使用to_jsonb()将其转换为正确的 JSON 值:

select to_jsonb(regexp_split_to_array(tags, '\s+'))
from test;

如果要永久更改列的数据类型,可以在 ALTER 语句中使用该表达式:

alter table test
  alter tags type jsonb 
     using to_jsonb(regexp_split_to_array(tags, '\s+'));

推荐阅读