I MariaDB, CONCAT()
er en indbygget strengfunktion, der udfører en strengsammenkædning på sine argumenter. Det returnerer den streng, der er resultatet af sammenkædning af dens argumenter.
Sammenkædning er operationen med at forbinde to eller flere strenge ende-til-ende.
CONCAT()
accepterer et eller flere argumenter, som alle returneres som en enkelt sammenkædet streng.
Syntaks
Syntaksen ser sådan ud:
CONCAT( str1, str2, ... )
Hvor str1, str2, …
repræsenterer de strengargumenter, som skal sammenkædes.
Eksempel
Her er et grundlæggende eksempel:
SELECT CONCAT('Homer', 'Jay');
Resultat:
+------------------------+| CONCAT('Homer', 'Jay') |+------------------------+| HomerJay |+------------------------+
I dette tilfælde sammenkædede vi to strenge.
Her er den igen, men denne gang tilføjer vi et mellemrum:
SELECT CONCAT('Homer', ' ', 'Jay');
Resultat:
+-------------------------------------+| CONCAT('Homer', ' ', 'Jay') |+-----------------------------------+| Homer Jay |+-------------------------------------+
I dette tilfælde sammenkædede vi tre strenge.
Her er den med fem:
SELECT CONCAT('Homer', ' ', 'Jay', ' ', 'Simpson');
Resultat:
+-----------------------------------------------------+ | CONCAT('Homer', ' ', 'Jay', ' ', 'Simpson') |+-------------------------------- ------------------+| Homer Jay Simpson |+---------------------------------------------- +
Binære strenge
Hvis et af argumenterne er en binær streng, er resultatet en binær streng:
SELECT CONCAT(BINARY 'Homer', 'Jay');
Resultat:
+---------------------------------------+| CONCAT(BINÆR 'Homer', 'Jay') |+-------------------------------------+| HomerJay |+--------------------------------------+
Vi kan bruge COLLATION()
funktion til at kontrollere sammenstillingen af resultatet:
SELECT COLLATION(CONCAT(BINARY 'Homer', 'Jay'));
Resultat:
+--------------------------------------------------+| COLLATION(CONCAT(BINÆR 'Homer', 'Jay')) |+---------------------------------------- --------+| binær |+---------------------------------------------------+
Hvis vi fjerner den BINARY
operatør, får vi et andet resultat:
SELECT COLLATION(CONCAT('Homer', 'Jay'));
Resultat:
+----------------------------------------+| COLLATION(CONCAT('Homer', 'Jay')) |+---------------------------------------- +| utf8_general_ci |+-----------------------------------------+
Også ifølge MariaDB-dokumentationen konverteres numeriske argumenter til deres tilsvarende binære strengform. Du kan undgå dette ved at lave en eksplicit type cast (ved at bruge CAST()
eller CONVERT()
).
Nul-argumenter
Hvis nogen af argumenterne er null
, CONCAT()
returnerer null
.
Der er dog én undtagelse:Når du er i Oracle-tilstand (dvs. sql_mode=ORACLE
), enhver null
argumenter ignoreres simpelthen.
Lad os først se, hvordan CONCAT()
opfører sig i standardtilstand.
Indstil vores session til standardtilstand:
SET SESSION sql_mode=DEFAULT;
Kør nu CONCAT()
med en null
argument:
SELECT CONCAT('Homer', ' ', null, ' ', 'Simpson');
Resultat:
+----------------------------------------------------+| CONCAT('Homer', ' ', null, ' ', 'Simpson') |+------------------------------------ --------------+| NULL |+----------------------------------------------------+Som forventet er resultatet
null
.Lad os nu skifte vores session til Oracle-tilstand:
SET SESSION sql_mode=ORACLE;
Og lad os nu køre den forrige
CONCAT()
eksempel igen:SELECT CONCAT('Homer', ' ', null, ' ', 'Simpson');
Resultat:
+----------------------------------------------------+| CONCAT('Homer', ' ', null, ' ', 'Simpson') |+------------------------------------ --------------+| Homer Simpson |+----------------------------------------------------+Denne gang ignorerede den
null
argument, og sammenkædede alle resterende ikke-null
argumenter. Hvis du ser godt efter, vil du se, at det sammenkædede begge mellemrum, så der er et dobbelt mellemrum mellemHomer
ogSimpson
.For en
null
-sikkert alternativ, brugCONCAT_WS()
. Den funktion ignorerernull
værdier, selv når de ikke er i Oracle-tilstand.Alternativt kan du bruge
IFNULL()
at give en alternativ (streng) værdi fornull
værdier (såsom en tom streng).Enkelt argument
Kalder
CONCAT()
med kun et argument returnerer dette argument:SELECT CONCAT('Homer');
Resultat:
+----------------+| CONCAT('Homer') |+-----------------+| Homer |+-----------------+Manglende argument
Kalder
CONCAT()
uden at sende nogen argumenter resulterer det i en fejl:SELECT CONCAT();
Resultat:
FEJL 1582 (42000):Forkert parameterantal i kaldet til den oprindelige funktion 'CONCAT'