json - 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
如何将列转换为tags
postgresql 中的 JSON 列?
解决方案
您需要首先将“纯文本”转换为数组,然后可以使用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+'));
推荐阅读
- angular - 将jsPDF autoTable插件导入离子角度项目
- google-api - 如何通过电子邮件地址 gmail.com 获取名字和姓氏?
- excel - 访问 VBA(打开 excel 文件并关闭):关闭“文件现在可用”
- javascript - 如何列出我使用 Json 选择的品牌型号?
- json - 我需要从 scala 中的嵌套 json 文件创建一个 spark 数据框
- python - 将文件从 S3 Bucket 传输到另一个保存文件夹结构 - python boto
- django - 检索所有数据库对象及其相关对象 Django
- php - 在 Sylius/Symfony 中解析控制器服务
- google-apps-script - Embed Web App ReferenceError Google Apps 脚本
- javascript - 滚动 300 像素后显示粘性标题