sql >> Databasteknik >  >> RDS >> PostgreSQL

Fylla i flerdimensionell array

Postgres har en dedikerad funktion för det ändamålet exakt: strong>array_fill() :

Använd det:

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;

Anteckningar

  • Arraydimensioner i numeric[7][24] är bara dokumentation. Manualen:
  • Om tilldelningsoperatorn i plpgsql::= eller = :

  • Det är i allmänhet inte möjligt att skriva till ett arrayelement direkt. Du kan sammanfoga eller lägga till / lägga till element. Eller tilldela en array som helhet. Detaljer i manualen. Men ett påstående som detta är inte möjligt :

    tarifas[%][%] = 0
  • Den nedre standardgränsen för en array är 1, inte 0. Men du kan definiera godtycklig arraydimension. Exempel:

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



  1. Hur man får nullbar DateTime ur databasen

  2. (Python) psycopg2 installation

  3. ORA-01775:looping kedja av synonymer men det finns inga synonymer

  4. Fel odefinierad metod `to_key' för [xxx] :Array när man försöker använda arraydata på Active Admin table_for (Rails, Postgresql, postgres_ext gem)