以不区分大小写的方式使用json_populate_recordset

时间:2016-12-05 03:04:00

标签: json postgresql

是否可以使用json_populate_recordset以便使用PostgreSQL(9.6)以不区分大小写的方式比较表列名/ json键?

例如,以下代码段将返回零行。

CREATE TABLE foo (bar TEXT);
SELECT * from json_populate_recordset(null::foo, '[{"bAr":1}]')

当然我可以将json键转换为小写,或者表名可以区分大小写。

1 个答案:

答案 0 :(得分:0)

我认为不区分大小写是不可能的。如果您事先知道将用于记录的大小写(例如,它们始终是驼峰式的),则可以通过引用列名来指定特定的大小写。

显示不区分大小写的基线示例:

# 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" : 1}, {"Abc" : 2}, {"aBc" : 3}, {"abC" : 4}]');
 aBc
-----


   3

(4 rows)

如果您不能保证输入数据的大小写,请显示所有小写字母。