sql >> Databasteknik >  >> RDS >> MariaDB

Hur CONCAT() fungerar i MariaDB

I MariaDB, CONCAT() är en inbyggd strängfunktion som utför en strängsammansättning på dess argument. Den returnerar strängen som resulterar från sammanlänkning av dess argument.

Sammanfogning är operationen att sammanfoga två eller flera strängar ände till ände.

CONCAT() accepterar ett eller flera argument, som alla returneras som en enda sammanfogad sträng.

Syntax

Syntaxen ser ut så här:

CONCAT( str1, str2, ... ) 

Där str1, str2, … representerar strängargumenten som ska sammanfogas.

Exempel

Här är ett grundläggande exempel:

SELECT CONCAT('Homer', 'Jay'); 

Resultat:

+------------------------+| CONCAT('Homer', 'Jay') |+------------------------+| HomerJay |+------------------------+

I det här fallet sammanfogade vi två strängar.

Här är den igen, men den här gången lägger vi till ett mellanslag däremellan:

SELECT CONCAT('Homer', ' ', 'Jay'); 

Resultat:

+-------------------------------------+| CONCAT('Homer', ' ', 'Jay') |+------------------------------------+| Homer Jay |+-------------------------------------+

I det här fallet sammanfogade vi tre strängar.

Här är den med fem:

SELECT CONCAT('Homer', ' ', 'Jay', ' ', 'Simpson'); 

Resultat:

+------------------------------------------------------------+ | CONCAT('Homer', ' ', 'Jay', ' ', 'Simpson') |+-------------------------------- ------------------+| Homer Jay Simpson |+----------------------------------------------------- +

Binära strängar

Om något av argumenten är en binär sträng, blir resultatet en binär sträng:

SELECT CONCAT(BINARY 'Homer', 'Jay'); 

Resultat:

+--------------------------------------+| CONCAT(BINÄR 'Homer', 'Jay') |+-------------------------------------+| HomerJay |+--------------------------------------+

Vi kan använda COLLATION() funktion för att kontrollera sammanställningen av resultatet:

SELECT COLLATION(CONCAT(BINARY 'Homer', 'Jay')); 

Resultat:

+--------------------------------------------------+| COLLATION(CONCAT(BINÄR 'Homer', 'Jay')) |+---------------------------------------- --------+| binär |+--------------------------------------------------+

Om vi ​​tar bort BINARY operatör får vi ett annat resultat:

SELECT COLLATION(CONCAT('Homer', 'Jay')); 

Resultat:

+----------------------------------------+| COLLATION(CONCAT('Homer', 'Jay')) |+---------------------------------------- +| utf8_general_ci |+-----------------------------------------+

Enligt MariaDB-dokumentationen konverteras också numeriska argument till sin motsvarande binära strängform. Du kan undvika detta genom att göra en explicit typcast (med CAST() eller CONVERT() ).

Nollargument

Om något av argumenten är null , CONCAT() returnerar null .

Det finns dock ett undantag:i Oracle-läge (d.v.s. sql_mode=ORACLE ), någon null argument ignoreras helt enkelt.

Låt oss först se hur CONCAT() fungerar i standardläge.

Ställ in vår session på standardläge:

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 förväntat är resultatet null .

Låt oss nu byta vår session till Oracle-läge:

SET SESSION sql_mode=ORACLE; 

Och låt oss nu köra föregående CONCAT() exempel igen:

SELECT CONCAT('Homer', ' ', null, ' ', 'Simpson'); 

Resultat:

+----------------------------------------------------+| CONCAT('Homer', ' ', null, ' ', 'Simpson') |+------------------------------------ --------------+| Homer Simpson |+----------------------------------------------------+

Den här gången ignorerade den null argument och sammanlänkade alla återstående icke-null argument. Om du tittar noga ser du att det sammanlänkade båda utrymmena, så det finns ett dubbelt mellanslag mellan Homer och Simpson .

För en null -säkert alternativ, använd CONCAT_WS() . Den funktionen ignorerar null värden, även när de inte är i Oracle-läge.

Alternativt kan du använda IFNULL() för att tillhandahålla ett alternativt (sträng)värde för null värden (som en tom sträng).

Enstaka argument

Anropar CONCAT() med bara ett argument returnerar helt enkelt det argumentet:

SELECT CONCAT('Homer'); 

Resultat:

+----------------+| CONCAT('Homer') |+-----------------+| Homer |+-----------------+

Argument saknas

Anropar CONCAT() utan att skicka några argument resulterar i ett fel:

SELECT CONCAT(); 

Resultat:

ERROR 1582 (42000):Fel parameterräkning i anropet till den ursprungliga funktionen 'CONCAT'

  1. Oracle SQL:Hur man använder mer än 1000 objekt i en IN-klausul

  2. Bästa tillvägagångssätt för grupperade löpande summor

  3. Finns det något som en zip()-funktion i PostgreSQL som kombinerar två arrayer?

  4. MySQL-dump efter fråga