Hvordan finne matriselengde i PostgreSQL?

Hvordan finne matriselengde i PostgreSQL?
PostgreSql la til funksjonen til “array_length” i 8.4 versjon. "Array_length" returnerer lengden på en matrisedimensjon. Arrays er veldig nyttige for aggregering og lagring av data for den minste listen. PostgreSQL lar deg lage matriser av hvilken som helst datatype inkludert innebygd type, en brukerdefinert type og flerdimensjonale matriser også, men PostgreSQL tillater ikke en rekke domener å støttes.

Det er andre datatyper også hvis du lager en tabell ved hjelp av pgadmin. I denne artikkelen vil du lære om hvordan du kan finne en matriselengde i PostgreSQL i Windows 10 ved hjelp av noen få eksempler.

Syntaks

Syntaksen for å finne en matriselengde er:

# array_length (kolonne_navn, int)

I syntaks ovenfor returnerer "array_length" lengden på ønsket "kolonne_navn" som er skrevet i utgangspunktet. "Int" på andreplassen nevner hvilken dimensjon av matrisen som måles.

Array_Length i PostgreSql

For å finne en matriselengde, må du opprette en tabell i PostgreSQL enten ved å bruke PGADMIN -verktøyet eller SQL Shell. Jeg har laget et bord som heter "dagligvarer" som består av tre kolonner. Syntaksen for å lage en tabell er:

# Lag bord dagligvarer ("id" heltall ikke null, "person" -karakter varierende (100), "elementer" -karakter varierende [255], primærnøkkel ("id"));

I spørringen ovenfor, som navnet antyder, oppretter "Create Table" tabellen med navnet "dagligvarer" som er sammensatt av tre forskjellige kolonner kalt "ID", "Person" og "elementer". Med hvert kolonnenavn er datatypene deres erklært, er "elementene" erklært som en array -type ved bruk av [], som indikerer at vi vil ha datatypen som en matrise. Her er "ID" oppgitt som den primære nøkkelen i en tabell. Etter å ha opprettet tabellen “dagligvarer”, settes dataene for hver kolonne inn i henhold til deres respektive datatyper. "Dagligvarer" -bordet ser nå slik ut

I "ID" -kolonnen tildeles hver person et nummer og navn i "person" -kolonnen. I kolonnen "varer" er disse varene nevnt som hver person har kjøpt. Alle elementene er endimensjonale bortsett fra den der ID = 7, uttrykkes som en flerdimensjonal matrise.

Nå som tabellen er opprettet, la oss kjøre noen eksempler for å finne lengden på en matrise i "dagligvarer" -tabellen.

# Velg "id", "person", "elementer", array_length ("elementer", 1) fra "dagligvarer";

I spørringen ovenfor, velger "Select" -uttalelsen alle kolonnene som er nevnt inkludert "ID", "Person", "Elementer". "Array_length" -funksjonen som tar to parameters "elementer" og "1" betyr at den ønsker å måle lengden på "elementene" -kolonnen og "1" beskriver dimensjonen som array blir målt. Ovennevnte spørring viser følgende utdata:

Ovennevnte utgang viser matriselengden til hver vare en person har kjøpt. Som vi kan se at dataene ikke er i en bestemt rekkefølge, vises lengden på 3 elementer først, og 1 element vises til slutt, fordi Select -setningen returnerer kolonnen på en usortert måte.

Array_length Bruke bestilling av i PostgreSql

I forrige eksempel har vi sett lengden på en matrise i resultatet ikke ble sortert. Vi kan sortere kolonnen enkelt ved å bruke "orden etter" -bestemmelsen enten i nedstigning eller stigende rekkefølge ved å kjøre følgende spørsmål:

# Velg "ID", "Person", "Items", Array_Length ("Items", 1) fra "Groceries" Order by Array_Length ("Items", 1) Desc;

I spørringen ovenfor har "orden etter" -bestemmelsen sortert radene i synkende rekkefølge som vist i utdataene nedenfor:

Det kan sees tydelig at "orden etter" -bestemmelsen har sortert "elementet" -kolonnen i synkende rekkefølge som vi nevnte i spørringen. Tilsvarende kan vi også sortere kolonnelengden "Elementer" i stigende rekkefølge, men denne gangen vil jeg bruke et alias for "Array_length" -kolonnen slik at jeg ikke trenger å gjenta det med "Order etter" -klausulen. Spørringen for å sortere kolonnen i stigende rekkefølge er:

# Velg "ID", "Person", "Items", Array_Length ("Items", 1) LEN_ASCENDING FRA "GROTERIES" BESTILLING AV LEN_ASCENDING ASC;

I spørringen ovenfor har jeg erklært aliaset som "len_ascending" og kolonnen er sortert i stigende rekkefølge som gir utdata nedenfor:

I ovennevnte utgang kan aliaset som brukes sees, og kolonnen sorteres i stigende rekkefølge ved å bruke "Order by" -klausulen og "ASC" -funksjonen i spørringen.

Returnerer maksimal array_length i postgreSql

Hvis du bare vil ha den maksimale lengden på en matrise i en kolonne, kan du begrense resultatet ved å bruke "Limit" -klausulen i spørringen med "Order by" -klausulen. "Limit" -bestemmelsen vil bare returnere antall rader du har nevnt. Spørringen for bare å returnere den maksimale matriselengden i PostgreSQL er:

# Velg "ID", "Person", "Items", Array_Length ("Items", 1) fra "Groceries" Order by Array_Length ("Items", 1) Desc Limit 1;

I denne spørringen returnerer "ordren etter" og "grense" -klausulen den maksimale array -lengden i "elementer" -kolonnen. "Ordren etter" -bestemmelsen og "Desc" -funksjonen returnerer den høyeste verdien fra "elementer" -kolonnen, og "Limit" -bestemmelsen returnerer bare 1 rad som nevnt i en spørring, og resultatet vises som:

Personen som kjøpte det maksimale antallet varer er "Catherine" med en matriselengde på 6.

Du kan også finne personen med minimum dagligvarelementer ved å bruke "ASC" -funksjonen i stedet for "DESC" -funksjonen og kan også begrense radene til mer enn 1.

Array_length ved å bruke hvor leddet

Hvis du vil finne matriselengden til en bestemt personelement, vil "hvor" -klausulen hjelpe deg med å finne den posten. “Hvor” -klausulen filtrerer radene i henhold til tilstanden du har satt. Nedenfor er spørringen for "array_length" ved å bruke "hvor" -klausulen:

# Velg "id", "person", "elementer", array_length ("elementer", 1) fra "dagligvarer" hvor "person" = 'barry';

I spørringen ovenfor har jeg spesifisert tilstanden som finner array -lengden fra tabellen "dagligvarer" der personens navn er Barry, som gir følgende resultat:

Utgangen viser at Barry kjøpte to varer som dukket opp i den siste kolonnen “Array_Length”.

Konklusjon

Vi har diskutert hvordan vi kan finne lengden på en matrise i PostgreSQL ved å bruke forskjellige eksempler. PostgreSql gjør det mindre komplisert å bruke matriser i en spørring og finne lengden på en kolonne ved å bruke bare den enkle syntaks array_length (kolonne_navn, int).

"Array_length" i denne syntaksen returnerer lengden på en rekke av det første argumentet i.e., kolonne_navn, og “int” forteller dimensjonen til matrisen målt. Oppsummering kan array -lengde også måles enkelt med forskjellige funksjoner og klausuler.