sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man delar en sträng i PostgreSQL

Problem:

Du vill dela en sträng i PostgreSQL.

Exempel 1:

Du har en mening och du vill dela den med mellanslagstecknet.

Lösning 1:

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

Resultatet ser ut så här:

delar
Det är
en
exempel
mening.

Diskussion:

För att få alla delar av meningen som element i en array i PostgreSQL, använd funktionen string_to_array(text, delimiter). Texten är den text du vill dela upp, och avgränsaren är strängen (här ett mellanslag) som du vill dela texten med. En enkel användning av string_to_array(text, delimiter) funktion:

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

kommer att returnera följande resultat:

delar
{Det är,ett,exempel,mening.}
SELECT unnest(
  string_to_array('It''s an example sentence.', ' ')
) AS parts;

Detta kommer att producera en kolumn med alla strängdelar, var och en i en separat rad.

Exempel 2:

I sentences tabell, det finns några meningar.

mening
Detta är den första meningen.
Och här är den andra.

Du vill dela meningarna med blanksteg.

Lösning 2:

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

Resultatet ser ut så här:

delar
Detta
är
den
först
mening.
Och
här är
den
annat
ett.

Diskussion:

Precis som i föregående exempel, använd funktionerna string_to_array(text, avgränsare) och unnest(array). Texten ska vara kolumnnamnet (mening), men avgränsaren är fortfarande mellanslag (' '). Den här gången använder du data från tabellen, så du måste använda nyckelordet FROM tillsammans med tabellnamnet.

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

Exempel 3:

I sentences tabell, det finns två kolumner:id och sentence .

id mening
1 Detta är den första meningen.
2 Och här är den andra.

Du vill dela meningarna med blanksteg.

Lösning 3:

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

Resultatet ser ut så här:

id delar
1 Detta
1 är
1 den
1 först
1 mening.
2 Och
2 här är
2 den
2 annat
2 en.

Diskussion:

Det här exemplet är väldigt likt, men du vill också se id kolumn. För att se den här kolumnen lägger du bara till den i SELECT lista och kom ihåg att inkludera kommatecken. Du kommer att se meningens ID tillsammans med delarna av meningarna i resultatet. Till exempel är den första meningen uppdelad i 5 delar, och den har ID:t 1 . Därför kommer ID:t för alla 5 delarna i resultatet att vara 1 . Nästa mening, med ID:t 2 , är också uppdelad i 5 delar, och var och en av dessa delar kommer att visas med id = 2 .


  1. Långsam LEFT JOIN på CTE med tidsintervall

  2. Förlorade anslutningen till MySQL-servern vid "läsning av initialt kommunikationspaket", systemfel:0

  3. DATEDIFF() Exempel – MySQL

  4. PDO få det sista ID:t insatt