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

7

是否有可能使用json_populate_recordset来实现在PostgreSQL (9.6)中以不区分大小写的方式比较表列名/JSON键?

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

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

当然,我可以将JSON键转换为小写,或者表名区分大小写。
1个回答

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)

现在让我们选择一个特定的案例,通过引用列名来使用它。最初的回答中提到了这一点。
# 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)

如果您无法保证输入数据的大小写,建议全部转换为小写。最初的回答。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接