PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak wybrać minimalny UUID z lewym złączem zewnętrznym?

Znalazłem rozwiązanie, okazuje się, że funkcja porównująca identyfikatory UUID z ten post nie jest poprawne. Oto funkcja, którą napisałem, prawdopodobnie mniej wydajna, która przechodzi wszystkie przypadki, w których wcześniej się nie powiodła:

    CREATE FUNCTION min_uuid(uuid, uuid)
    RETURNS uuid AS $$
    BEGIN
        -- if they're both null, return null
        IF $2 IS NULL AND $1 IS NULL THEN
            RETURN NULL ;
        END IF;

        -- if just 1 is null, return the other
        IF $2 IS NULL THEN
            RETURN $1;
        END IF ;
        IF $1 IS NULL THEN
            RETURN $2;
          END IF;

        -- neither are null, return the smaller one
        IF $1 > $2 THEN
            RETURN $2;
        END IF;

        RETURN $1;
    END;
    $$ LANGUAGE plpgsql;


    create aggregate min(uuid) (
      sfunc = min_uuid,
      stype = uuid,
      combinefunc = min_uuid,
      parallel = safe,
      sortop = operator (<)
    );



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak używać Railsów z nazwami kolumn pisanymi wielkimi literami?

  2. Automatyczne przełączanie awaryjne bazy danych Moodle PostgreSQL

  3. Jak mogę wyodrębnić części DateRangeField Django Postgres?

  4. BŁĄD:operator nie istnieje:numeryczny ~* nieznany

  5. Jak zmienić użytkownika na superużytkownika w PostgreSQL?