sql >> Database teknologi >  >> RDS >> MariaDB

Hvordan CONCAT() virker i MariaDB

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 mellem Homer og Simpson .

For en null -sikkert alternativ, brug CONCAT_WS() . Den funktion ignorerer null værdier, selv når de ikke er i Oracle-tilstand.

Alternativt kan du bruge IFNULL() at give en alternativ (streng) værdi for null 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'

  1. Android SQLite problem - tabel ... har ingen kolonne navngivet

  2. mysql-python installationsfejl:Kan ikke åbne inkludere filen 'config-win.h'

  3. MySQL-liste over alle procedurer

  4. Installation af PDO-drivere til PostgreSQL på Mac (ved hjælp af Zend til eclipse)