如何在JSON(简单的JSON值)中不存在键的情况下将postgres JSON列强制转换为int



我正在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中(:

idval_int
1
20
32

最新更新