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

Pie*_*ard 5 postgresql json

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

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

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

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

小智 2

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

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

# 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)
Run Code Online (Sandbox Code Playgroud)

现在让我们通过引用列名来选择要使用的特定情况。

# 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)
Run Code Online (Sandbox Code Playgroud)

如果您不能保证输入数据的大小写,则将所有内容显示为小写。