Problem:
Du vill sammanfoga strängar från två kolumner i en tabell till en.
Exempel:
Vår databas har en tabell som heter student
med data i följande kolumner:id
, first_name
och last_name
.
id | förnamn | efternamn |
---|---|---|
1 | Lora | Smith |
2 | Emil | Brun |
3 | Alex | Jackson |
4 | Martin | Davis |
Låt oss lägga till förnamnet till efternamnet på studenten i en sträng. Använd ett mellanslag mellan varje namn.
Lösning:
SELECT first_name || ‘ ‘ || last_name AS full_name FROM student;
Den här frågan returnerar poster i en kolumn med namnet full_name
:
fullständigt_namn |
---|
Lora Smith |
Emil Brown |
Alex Jackson |
Martin Davis |
Diskussion:
För att lägga till en sträng till en annan och returnera ett resultat, använd || operatör. Detta lägger till två strängar från vänster och höger tillsammans och returnerar ett resultat. Om du använder namnet på kolumnen, omslut det inte inom citattecken. Men om du använder ett strängvärde som ett mellanslag eller text, omslut det inom citattecken.
I vårt exempel lade vi till ett blanksteg till first_name
och sedan kolumnen last_name
. Denna nya kolumn kallas full_name
.
Du kan också använda en speciell funktion:CONCAT. Det krävs en lista med strängar eller namn på kolumner för att gå med som argument:
SELECT CONCAT(first_name, ‘ ‘, last_name) AS full_name FROM student;
Resultaten är identiska.
Funktionen CONCAT() är dock bättre för att hämta data från en kolumn med NULL-värden. Varför? Eftersom, när en NULL ingår i värdena som ska sammanfogas, returnerar operatören NULL som ett resultat. I fallet CONCAT(), kommer NULL inte att visas.
Titta på resultatet av || operatör om Emill inte har ett efternamn registrerat:
SELECT first_name || ‘ ‘ || last_name AS full_name FROM student;
fullständigt_namn |
---|
Lora Smith |
NULL |
Alex Jackson |
Martin Davis |
Titta på CONCAT-funktionen för samma data:
SELECT CONCAT(first_name, ‘ ‘, last_name) AS full_name FROM student;
fullständigt_namn |
---|
Lora Smith |
Emil |
Alex Jackson |
Martin Davis |