我是PostgreSQL世界的新手,并且不了解它的产品。我有一个要求,我必须在解析PostgreSQL中的JSONB列时找到2个记录集中的值的更改。这就是我在说什么。
我想创建一个接受4个参数的PostgreSQL FUNCTION {dynamicstring1字符变化,dynamicstring2字符变化,columnsToCheck字符变化,uniqueColumns字符变化}
CREATE OR REPLACE FUNCTION ChangeTrack(dynamicstring1 character varying,
dynamicstring2 character varying,
UniqueCols character varying,
columnsToCheck character varying)
RETURNS VOID AS $$
$$
LANGUAGE SQL;
在函数内部,我将通过EXECUTE函数执行这两个动态字符串,它应该给我如下的结果集:
来自dynamicstring1的数据集
1, 25193,{"ID":1,"Age":12.1,"Name":"P1","Address":"Add11"}
2, 25193,{"ID":2,"Age":13.1,"Name":"P2","Address":"Add21"}
3, 25193,{"ID":3,"Age":14.1,"Name":"P3","Address":"Add31"}
4, 25193,{"ID":4,"Age":15.1,"Name":"P4","Address":"Add41"}
5, 25193,{"ID":5,"Age":16.1,"Name":"P5","Address":"Add51"}
6, 25193,{"ID":6,"Age":17.1,"Name":"P6","Address":"Add61"}
来自dynamicstring2的数据集
7, 25194,{"ID":1,"Age":12,"Name":"P1","Address":"Add1"}
8, 25194,{"ID":2,"Age":13,"Name":"P2","Address":"Add2"}
9, 25194,{"ID":3,"Age":14,"Name":"P3","Address":"Add3"}
10, 25194,{"ID":4,"Age":15,"Name":"P4","Address":"Add4"}
11, 25194,{"ID":5,"Age":16,"Name":"P5","Address":"Add5"}
12, 25194,{"ID":6,"Age":17,"Name":"P6","Address":"Add6"}
包含此数据的表格是
Result(UId PK bigint, ResultId bigint, Results jsonB).
期望很简单,我应该循环通过数据集来自dynamicstring1 中的记录,一次取一行,在数据集中找到同一行来自dynamicstring2 并在中提到的列之间进行字符串比较 两行之间的 columnsToCheck 数组。
columnsToCheck 是一个字符串数组,其中包含要监视的列。它的值为[“Age”,“Address”]。因此,需要跟踪这两个变化。
在数据集来自dynamicstring2 中查找行的方法应该是:当来自数据集来自dynamicstring1 的行被循环时,我们从列中获取值在 uniqueCols 中提到并查找相同的值以在数据集来自dynamicstring2 中查找相应的行。因此 uniqueCols 将是另一个字符串数组值为[“Id”,“Name”]。这将确保我们始终将数据集中来自dynamicstring1 的相同Id和Name的记录与来自dynamicstring2 数据集的记录进行比较/强>
我可能听起来很复杂,但我更像是一个以前没有处理过JSON解析的SQL人员。在这里寻求一些好的帮助可以带我前进。