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

Sådan opdeles en streng i PostgreSQL

Problem:

Du vil opdele en streng i PostgreSQL.

Eksempel 1:

Du har en sætning, og du vil gerne opdele den med mellemrumstegnet.

Løsning 1:

SELECT unnest(
  string_to_array('It''s an example sentence.', ' ')
) AS parts;

Resultatet ser således ud:

dele
Det er
en
eksempel
sætning.

Diskussion:

For at få alle dele af sætningen som elementer i et array i PostgreSQL, skal du bruge funktionen string_to_array(text, delimiter). Teksten er den tekst, du gerne vil opdele, og afgrænsningstegnet er den streng (her et mellemrum), som du gerne vil opdele teksten med. En simpel brug af string_to_array(text, delimiter) funktion:

SELECT string_to_array('It''s an example sentence.', ' ') AS parts;

vil returnere følgende resultat:

dele
{Det er,et,eksempel,sætning.}
SELECT unnest(
  string_to_array('It''s an example sentence.', ' ')
) AS parts;

Dette vil producere en kolonne med alle strengdele, hver i en separat række.

Eksempel 2:

I sentences tabel, er der nogle sætninger.

sætning
Dette er den første sætning.
Og her er den anden.

Du vil opdele sætningerne med mellemrumstegnet.

Løsning 2:

SELECT unnest(string_to_array(sentence, ' ')) AS parts
FROM sentences;

Resultatet ser således ud:

dele
Dette
er
den
først
sætning.
Og
her er
den
andet
én.

Diskussion:

Ligesom i det foregående eksempel, brug funktionerne string_to_array(tekst, afgrænser) og unnest(array). Teksten skal være kolonnenavnet (sætning), men afgrænsningstegnet er stadig mellemrummet (' '). Denne gang bruger du data fra tabellen, så du skal bruge FROM nøgleordet sammen med tabelnavnet.

SELECT unnest(string_to_array(sentence, ' ')) AS parts
FROM sentences;

Eksempel 3:

I sentences tabel, er der to kolonner:id og sentence .

id sætning
1 Dette er den første sætning.
2 Og her er den anden.

Du vil opdele sætningerne med mellemrumstegnet.

Løsning 3:

SELECT
  id,
  unnest(string_to_array(sentence, ' ')) AS parts
FROM sentences;

Resultatet ser således ud:

id dele
1 Dette
1 er
1 den
1 først
1 sætning.
2 Og
2 her er
2 den
2 andet
2 én.

Diskussion:

Dette eksempel ligner meget, men du vil også gerne se id kolonne. For at se denne kolonne skal du blot tilføje den til SELECT liste og husk at medtage kommaet. Du vil se sætningens ID sammen med delene af sætningerne i resultatet. For eksempel er den første sætning opdelt i 5 dele, og den har ID'et 1 . Derfor vil ID'et for alle 5 dele i resultatet være 1 . Den næste sætning med ID'et 2 , er også opdelt i 5 dele, og hver af disse dele vil blive vist med id = 2 .


  1. MySQL spring de første 10 resultater over

  2. Hvordan ændres den udenlandske nøglehenvisningshandling? (opførsel)

  3. Flere showplan-forbedringer? Ja tak!

  4. Sådan ser du den faktiske Oracle SQL-sætning, der udføres