小编poz*_*ozs的帖子

用于相等的 PostgreSQL 自定义运算符

我想建立PostgreSQL中的自定义相等操作符,可以在使用GROUP BYUNIONDISTINCT [ON]json类型(只是为了好奇的缘故,而不是真实世界中的实现-这就是为什么即将到来的jsonb类型是不是我要找的)。

我可以编写一个函数来测试json相等性:

CREATE OR REPLACE FUNCTION json_equals(json, json)
  RETURNS BOOLEAN
  LANGUAGE sql
  IMMUTABLE
  STRICT
AS $function$
  SELECT CASE f1
    WHEN '{' THEN -- object
      CASE f2
        WHEN '{' THEN (
          SELECT COALESCE(bool_and(k1 IS NOT NULL AND k2 IS NOT NULL AND json_equals(v1, v2)), TRUE)
          FROM (SELECT DISTINCT ON (k1) * FROM json_each($1) AS j1(k1, v1) ORDER BY k1, row_number() OVER () DESC) AS j1
          FULL JOIN …
Run Code Online (Sandbox Code Playgroud)

postgresql postgresql-9.3 json operator

6
推荐指数
1
解决办法
1592
查看次数

标签 统计

json ×1

operator ×1

postgresql ×1

postgresql-9.3 ×1