sql >> Database teknologi >  >> RDS >> PostgreSQL

Valg af arrays i pænt printet format i SQL

Der er flere måder. En måde er at caste arrayet til tekst og dele det op med regexp_split_to_table () .
Denne funktion er til stede i PostgreSQL 8.3 eller nyere .

SELECT regexp_split_to_table(trim(my_2d_intarr::text, '{}'), '},{');
 

Output:

0,0,0
1,1,1
2,2,2
 

Hvis du vil have de vedlagte parenteser (måske ikke?), skal du tilføje dem igen på denne måde:

SELECT '{' || regexp_split_to_table(trim(my_2d_intarr::text, '{}'), '},{') || '}';
 

Vores input:

{0,0,0} {1,1,1} {2,2,2}

Alternativt:

Dette burde også fungere med PostgreSQL 8.2 eller måske endnu tidligere, men det testede jeg ikke.

SELECT my_2d_int_arr_var[x:x][1:3]
  FROM (SELECT generate_series(1, array_upper(my_2d_intarr, 1), 1)::int4 AS x)) x
 

Output:

{{0,0,0}} {{1,1,1}} {{2,2,2}}

(Du ønsker måske at fjerne nogle krøllede parenteser ..)

Ellers ville jeg skrive en plpgsql-funktion, der går gennem arrayet. Ret nemt.

Der er også den relaterede unnest() funktion, men den returnerer en række pr. basiselement (heltal i dette tilfælde), så det nytter ikke noget her.

En (hurtig!) måde at udlæse resultatet på:COPY .




  1. Forbind computer-database-jpa Play 2.1 eksempelapplikation med MySQL

  2. Sådan henter du binært billede fra databasen ved hjælp af C# i ASP.NET

  3. Installer WordPress med Nginx, MariaDB 10 og PHP 7 på Debian 9

  4. Dynamisk SQL ved hjælp af konfigurationstabeller