In MariaDB, CONCAT()
is een ingebouwde tekenreeksfunctie die een tekenreeksaaneenschakeling uitvoert op zijn argumenten. Het geeft de string terug die het resultaat is van het aaneenschakelen van zijn argumenten.
Concatenatie is de bewerking van het samenvoegen van twee of meer strings end-to-end.
CONCAT()
accepteert een of meer argumenten, die allemaal worden geretourneerd als een enkele aaneengeschakelde tekenreeks.
Syntaxis
De syntaxis gaat als volgt:
CONCAT( str1, str2, ... )
Waar str1, str2, …
vertegenwoordigen de tekenreeksargumenten waarvoor ze moeten worden samengevoegd.
Voorbeeld
Hier is een eenvoudig voorbeeld:
SELECT CONCAT('Homer', 'Jay');
Resultaat:
+------------------------+ | CONCAT('Homer', 'Jay') | +------------------------+ | HomerJay | +------------------------+
In dit geval hebben we twee strings samengevoegd.
Hier is het weer, maar deze keer voegen we een spatie ertussen toe:
SELECT CONCAT('Homer', ' ', 'Jay');
Resultaat:
+-----------------------------+ | CONCAT('Homer', ' ', 'Jay') | +-----------------------------+ | Homer Jay | +-----------------------------+
In dit geval hebben we drie strings aaneengeschakeld.
Hier is het met vijf:
SELECT CONCAT('Homer', ' ', 'Jay', ' ', 'Simpson');
Resultaat:
+---------------------------------------------+ | CONCAT('Homer', ' ', 'Jay', ' ', 'Simpson') | +---------------------------------------------+ | Homer Jay Simpson | +---------------------------------------------+
Binaire strings
Als een van de argumenten een binaire string is, is het resultaat een binaire string:
SELECT CONCAT(BINARY 'Homer', 'Jay');
Resultaat:
+-------------------------------+ | CONCAT(BINARY 'Homer', 'Jay') | +-------------------------------+ | HomerJay | +-------------------------------+
We kunnen de COLLATION()
. gebruiken functie om de sortering van het resultaat te controleren:
SELECT COLLATION(CONCAT(BINARY 'Homer', 'Jay'));
Resultaat:
+------------------------------------------+ | COLLATION(CONCAT(BINARY 'Homer', 'Jay')) | +------------------------------------------+ | binary | +------------------------------------------+
Als we de BINARY
. verwijderen operator, krijgen we een ander resultaat:
SELECT COLLATION(CONCAT('Homer', 'Jay'));
Resultaat:
+-----------------------------------+ | COLLATION(CONCAT('Homer', 'Jay')) | +-----------------------------------+ | utf8_general_ci | +-----------------------------------+
Volgens de MariaDB-documentatie worden numerieke argumenten ook geconverteerd naar hun equivalente binaire tekenreeksvorm. U kunt dit voorkomen door een expliciete typecast uit te voeren (met behulp van CAST()
of CONVERT()
).
Nullargumenten
Als een van de argumenten null
. is , CONCAT()
retourneert null
.
Er is echter één uitzondering:in Oracle-modus (d.w.z. sql_mode=ORACLE
), elke null
argumenten worden gewoon genegeerd.
Laten we eerst eens kijken hoe CONCAT()
gedraagt zich in de standaardmodus.
Stel onze sessie in op de standaardmodus:
SET SESSION sql_mode=DEFAULT;
Voer nu CONCAT()
. uit met een null
argument:
SELECT CONCAT('Homer', ' ', null, ' ', 'Simpson');
Resultaat:
+--------------------------------------------+ | CONCAT('Homer', ' ', null, ' ', 'Simpson') | +--------------------------------------------+ | NULL | +--------------------------------------------+
Zoals verwacht is het resultaat null
.
Laten we nu onze sessie overschakelen naar Oracle-modus:
SET SESSION sql_mode=ORACLE;
En laten we nu de vorige CONCAT()
. uitvoeren voorbeeld nogmaals:
SELECT CONCAT('Homer', ' ', null, ' ', 'Simpson');
Resultaat:
+--------------------------------------------+ | CONCAT('Homer', ' ', null, ' ', 'Simpson') | +--------------------------------------------+ | Homer Simpson | +--------------------------------------------+
Deze keer negeerde het de null
argument, en alle resterende niet-null
. aaneengeschakeld argumenten. Als je goed kijkt, zie je dat het beide spaties aaneenvoegde, dus er is een dubbele spatie tussen Homer
en Simpson
.
Voor een null
-veilig alternatief, gebruik CONCAT_WS()
. Die functie negeert null
waarden, zelfs wanneer niet in Oracle-modus.
Als alternatief kunt u IFNULL()
. gebruiken om een alternatieve (tekenreeks) waarde op te geven voor null
waarden (zoals een lege tekenreeks).
Enkel argument
CONCAT()
. aanroepen met slechts één argument retourneert eenvoudig dat argument:
SELECT CONCAT('Homer');
Resultaat:
+-----------------+ | CONCAT('Homer') | +-----------------+ | Homer | +-----------------+
Ontbrekend argument
CONCAT()
. aanroepen zonder het doorgeven van argumenten resulteert in een fout:
SELECT CONCAT();
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'CONCAT'