MySQL har CONCAT()
funktion, som giver dig mulighed for at sammenkæde to eller flere strenge. Funktionen tillader faktisk et eller flere argumenter, men dens hovedanvendelse er at sammenkæde to eller flere strenge.
I MySQL (og i ethvert computerprogrammeringsmiljø) er strengsammenkædning operationen med at forbinde tegnstrenge ende-til-ende.
Her er et eksempel:
SELECT CONCAT('Homer', ' ', 'Simpson') AS 'Full Name';
Resultat:
+---------------+ | Full Name | +---------------+ | Homer Simpson | +---------------+
Bemærk, at jeg faktisk sammenkædede 3 strenge her. Jeg sammenkædede fornavnet, efternavnet plus et mellemrum.
Hvis jeg ikke tilføjede pladsen, ville det have set sådan ud:
SELECT CONCAT('Homer', 'Simpson') AS 'Full Name';
Resultat:
+--------------+ | Full Name | +--------------+ | HomerSimpson | +--------------+
Hvilket måske eller måske ikke er det resultat, du leder efter.
Så hvis vi anvender dette på en database, kan forespørgslen se nogenlunde sådan ud:
SELECT CONCAT(FirstName, ' ', LastName) AS 'Full Name' FROM Individuals WHERE IndividualId = '1';
Resultat:
+---------------+ | Full Name | +---------------+ | Homer Simpson | +---------------+
Hvis du sammenkæder mere end to strenge, og du har brug for et mellemrum (eller en anden separator), kan du overveje at bruge CONCAT_WS()
fungere. Dette giver dig mulighed for at angive en separator, der skal bruges mellem hver streng. Du behøver kun at angive separatoren én gang, og den bruges på hver streng, der er sammenkædet, hvilket sparer dig for at skulle genindtaste den mellem hver streng.
NULL-argumenter
CONCAT()
funktion returnerer NULL
hvis et argument er NULL
.
Eksempel:
SELECT CONCAT('Homer', NULL, 'Simpson') AS 'Full Name';
Resultat:
+-----------+ | Full Name | +-----------+ | NULL | +-----------+
Binære strenge vs ikke-binære strenge
MySQL-dokumentationen siger:
Hvis alle argumenter er ikke-binære strenge, er resultatet en ikke-binær streng. Hvis argumenterne inkluderer binære strenge, er resultatet en binær streng. Et numerisk argument konverteres til dets tilsvarende ikke-binære strengform.