我正在postgresql中处理数据,如以下mytable
中的字段id
(类型int
(和val
(类型json
(:
id | val |
---|---|
1 | "空"> |
2 | ";0"> |
3 | ";2〃 |
找到了这样做的方法:
您可以通过密钥路径访问内容(例如,请参阅PostgreSQL JSON备忘单(:
- 使用
#
运算符,您可以通过keypath访问json字段。指定像{}
这样的空密钥路径可以让您在没有密钥的情况下获取内容 - 在访问器中使用双尖括号
>>
将返回不带引号的内容,因此不需要trim()
函数
总体而言,声明
select id
, nullif(val#>>'{}', 'null')::int as val_int
from mytable
;
将返回前一个json列的内容作为int
,分别为NULL
(在postgresql>=9.4中(:
id | val_int |
---|---|
1 | 空 |
2 | 0 |
3 | 2 |