De flesta av de stora RDBMS:erna tillhandahåller flera alternativ för att sammanfoga två eller flera strängar.
- Det finns
CONCAT()
funktion, som sammanfogar dess argument. - Det finns också en
CONCAT_WS()
som låter dig ange en separator som separerar de sammanlänkade strängarna. - Och det finns också en strängsammansättningsoperator, som gör att vi kan sammanfoga dess operander.
Nedan finns exempel på varje metod.
CONCAT()
Funktion
De flesta större RDBMS tillhandahåller en CONCAT()
funktion för att sammanfoga dess strängargument. I allmänhet konverteras icke-strängargument till en sträng innan sammanlänkningen sker.
Exempel:
SELECT CONCAT('Bangkok', 'Breaking');
Resultat:
BangkokBreaking
Med den här funktionen, om vi vill inkludera ett mellanslag mellan strängarna, måste vi antingen lägga till ett mellanslag till en av strängarna eller inkludera ett mellanslag som ett separat argument:
SELECT
CONCAT('Bangkok ', 'Breaking') AS "Option 1",
CONCAT('Bangkok', ' ', 'Breaking') AS "Option 2";
Resultat:
+------------------+------------------+ | Option 1 | Option 2 | +------------------+------------------+ | Bangkok Breaking | Bangkok Breaking | +------------------+------------------+
RDBMS som har en CONCAT()
funktioner inkluderar MySQL, MariaDB, SQL Server, Oracle och PostgreSQL.
SQLite innehåller inte en CONCAT()
fungerar, men det gör det har en strängsammansättningsoperator (se nedan).
CONCAT_WS()
Funktion
Ett annat sätt att inkludera ett mellanslag mellan strängarna är att använda CONCAT_WS()
fungera. Den här funktionen låter dig ange en separator som ska användas för att separera alla sammanlänkade strängar.
Exempel:
SELECT CONCAT_WS(' ', 'Bangkok', 'Breaking');
Resultat:
Bangkok Breaking
Den här funktionen kan vara särskilt användbar om du har många strängar att sammanfoga:
SELECT CONCAT_WS(', ', 'Red', 'Green', 'Orange', 'Blue');
Resultat:
Red, Green, Orange, Blue
I sådana fall behöver du bara ange separatorn en gång.
RDBMS som har en CONCAT_WS()
funktioner inkluderar MySQL, MariaDB, SQL Server och PostgreSQL.
SQLite och Oracle har inte en CONCAT_WS()
funktion, men de gör har en strängsammansättningsoperator (se nedan).
Strängsammansättningsoperatören
De flesta RDBMS inkluderar en strängsammansättningsoperator som sammanfogar dess operander.
Om du använder SQLite är detta ditt enda alternativ.
Exempel:
SELECT 'Spy' || 'craft';
Resultat:
Spycraft
Observera att i MySQL måste du först aktivera rörsammansättningsoperatorn.
Detsamma gäller MariaDB.
SQL-server
Ovanstående exempel fungerar inte i SQL Server. I SQL Server, använd plustecknet (+
) strängsammansättningsoperator:
SELECT 'Spy' + 'craft';
Resultat:
Spycraft