sql >> Databáze >  >> RDS >> PostgreSQL

Naplnit vícerozměrné pole

Postgres má vyhrazenou funkci přesně pro tento účel:array_fill() :

Použijte to:

CREATE OR REPLACE FUNCTION teste()
  RETURNS void AS
$func$
DECLARE
    tarifas numeric[7][24] := array_fill(0, ARRAY[7,24]);
    a int;
    b int;
BEGIN
   -- do something
END
$func$  LANGUAGE plpgsql;

Poznámky

  • Rozměry pole v numeric[7][24] jsou jen dokumentací. Příručka:
  • O operátoru přiřazení v plpgsql::= nebo = :

  • Obecně není možné přímo zapisovat do prvku pole. Prvky můžete zřetězit nebo připojit / předřadit. Nebo přiřadit pole jako celek. Podrobnosti v příručce. Ale takové prohlášení není možné :

    tarifas[%][%] = 0
  • Výchozí dolní mez pole je 1, nikoli 0. Můžete však definovat libovolný rozměr pole. Příklad:

    SELECT '[2:3][2:4]={{7,7,7},{7,7,7}}'::int[]
    



  1. Import dat z Excelu v PHP

  2. Databáze receptů, vyhledávání podle přísad

  3. Neplatný mix chyb porovnávání v MySql

  4. Migrace SQL Django pro podmíněné spouštěče