是否可以使用json_populate_recordset,以便使用Postgresql(9.6)以不区分大小写的方式比较表列名/ / json键?
例如,以下代码段将返回零行.
CREATE TABLE foo (bar TEXT); SELECT * from json_populate_recordset(null::foo,'[{"bAr":1}]')
当然我可以将json键转换为小写,或者表名可能区分大小写.
解决方法
我不相信不区分大小写是可能的.如果您事先知道将用于记录的情况(例如,它们总是骆驼),您可以通过引用列名来指定特定情况.
显示不区分大小写的基线示例:
# create type x as (abc integer); CREATE TYPE # select * from json_populate_recordset(null::x,'[{"abc" : 1},{"Abc" : 2},{"aBc" : 3},{"abC" : 4}]'); abc ----- 1 (4 rows)
现在让我们通过引用列名来选择我们想要使用的特定案例.
# drop type x; DROP TYPE # create type x as ("aBc" integer); CREATE TYPE edgar=# select * from json_populate_recordset(null::x,{"abC" : 4}]'); aBc ----- 3 (4 rows)