是否可以使用json_populate_recordset
以便使用PostgreSQL(9.6)以不区分大小写的方式比较表列名/ json键?
例如,以下代码段将返回零行。
CREATE TABLE foo (bar TEXT);
SELECT * from json_populate_recordset(null::foo, '[{"bAr":1}]')
当然我可以将json键转换为小写,或者表名可以区分大小写。
答案 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)
如果您不能保证输入数据的大小写,请显示所有小写字母。