MySQL har CONCAT()
funktion, som låter dig sammanfoga två eller flera strängar. Funktionen tillåter faktiskt ett eller flera argument, men dess huvudsakliga användning är att sammanfoga två eller flera strängar.
I MySQL (och i alla datorprogrammeringsmiljöer) är strängsammansättning operationen att sammanfoga teckensträngar från början till slut.
Här är ett exempel:
SELECT CONCAT('Homer', ' ', 'Simpson') AS 'Full Name';
Resultat:
+---------------+ | Full Name | +---------------+ | Homer Simpson | +---------------+
Observera att jag faktiskt sammanfogade 3 strängar här. Jag sammanfogade förnamnet, efternamnet plus ett mellanslag.
Om jag inte lagt till utrymmet hade det sett ut så här:
SELECT CONCAT('Homer', 'Simpson') AS 'Full Name';
Resultat:
+--------------+ | Full Name | +--------------+ | HomerSimpson | +--------------+
Vilket kanske eller inte är resultatet du letar efter.
Så om vi tillämpar detta på en databas, kan frågan se ut ungefär så här:
SELECT CONCAT(FirstName, ' ', LastName) AS 'Full Name' FROM Individuals WHERE IndividualId = '1';
Resultat:
+---------------+ | Full Name | +---------------+ | Homer Simpson | +---------------+
Om du sammanfogar mer än två strängar och du behöver ett mellanslag (eller annan avgränsare), överväg att använda CONCAT_WS()
fungera. Detta gör att du kan ange en separator som ska användas mellan varje sträng. Du behöver bara ange separatorn en gång, och den används på varje sträng som är sammanlänkade, vilket gör att du slipper skriva om den mellan varje sträng.
NULL-argument
CONCAT()
funktion returnerar NULL
om något argument är NULL
.
Exempel:
SELECT CONCAT('Homer', NULL, 'Simpson') AS 'Full Name';
Resultat:
+-----------+ | Full Name | +-----------+ | NULL | +-----------+
Binära strängar vs icke-binära strängar
MySQL-dokumentationen säger:
Om alla argument är ickebinära strängar blir resultatet en ickebinär sträng. Om argumenten inkluderar några binära strängar, blir resultatet en binär sträng. Ett numeriskt argument konverteras till dess ekvivalenta icke-binära strängform.