V MariaDB CONCAT()
je vestavěná řetězcová funkce, která na svých argumentech provádí zřetězení řetězců. Vrací řetězec, který je výsledkem zřetězení jeho argumentů.
Zřetězení je operace spojování dvou nebo více řetězců end-to-end.
CONCAT()
přijímá jeden nebo více argumentů, z nichž všechny jsou vráceny jako jeden zřetězený řetězec.
Syntaxe
Syntaxe vypadá takto:
CONCAT( str1, str2, ... )
Kde str1, str2, …
představují argumenty řetězce, pro které se mají zřetězit.
Příklad
Zde je základní příklad:
SELECT CONCAT('Homer', 'Jay');
Výsledek:
+------------------------+| CONCAT('Homer', 'Jay') |+------------------------+| HomerJay |+------------------------+
V tomto případě jsme spojili dva řetězce.
Tady je to znovu, ale tentokrát mezi to přidáme mezeru:
SELECT CONCAT('Homer', ' ', 'Jay');
Výsledek:
+-----------------------------+| CONCAT('Homer', ' ', 'Jay') |+-----------------------------+| Homer Jay |+-----------------------------+
V tomto případě jsme spojili tři řetězce.
Tady je s pěti:
SELECT CONCAT('Homer', ' ', 'Jay', ' ', 'Simpson');
Výsledek:
+---------------------------------------------+ | CONCAT('Homer', ' ', 'Jay', ' ', 'Simpson') |+---------------------------- ------------------+| Homer Jay Simpson |+--------------------------------------------- +
Binární řetězce
Pokud je některý z argumentů binární řetězec, výsledkem je binární řetězec:
SELECT CONCAT(BINARY 'Homer', 'Jay');
Výsledek:
+-------------------------------+| CONCAT(BINARY 'Homer', 'Jay') |+-------------------------------+| HomerJay |+-------------------------------+
Můžeme použít COLLATION()
funkce pro kontrolu seřazení výsledku:
SELECT COLLATION(CONCAT(BINARY 'Homer', 'Jay'));
Výsledek:
+------------------------------------------+| COLLATION(CONCAT(BINARY 'Homer', 'Jay')) |+---------------------------------- --------+| binární |+------------------------------------------+
Pokud odstraníme BINARY
operátor, dostaneme jiný výsledek:
SELECT COLLATION(CONCAT('Homer', 'Jay'));
Výsledek:
+-----------------------------------+| COLLATION(CONCAT('Homer', 'Jay')) |+----------------------------------- +| utf8_general_ci |+-----------------------------------+
Podle dokumentace MariaDB jsou také číselné argumenty převedeny na jejich ekvivalentní formu binárního řetězce. Tomu se můžete vyhnout provedením explicitního přetypování (pomocí CAST()
nebo CONVERT()
).
Nulové argumenty
Pokud je některý z argumentů null
, CONCAT()
vrátí null
.
Existuje však jedna výjimka:V režimu Oracle (tj. sql_mode=ORACLE
), libovolný null
argumenty jsou prostě ignorovány.
Nejprve se podívejme, jak CONCAT()
se chová ve výchozím režimu.
Nastavte naši relaci na výchozí režim:
SET SESSION sql_mode=DEFAULT;
Nyní spusťte CONCAT()
s null
argument:
SELECT CONCAT('Homer', ' ', null, ' ', 'Simpson');
Výsledek:
+--------------------------------------------+| CONCAT('Homer', ' ', null, ' ', 'Simpson') |+------------------------------ ---------------+| NULL |+--------------------------------------------+Podle očekávání je výsledek
null
.Nyní přepněte naši relaci do režimu Oracle:
SET SESSION sql_mode=ORACLE;
A nyní spustíme předchozí
CONCAT()
znovu příklad:SELECT CONCAT('Homer', ' ', null, ' ', 'Simpson');
Výsledek:
+--------------------------------------------+| CONCAT('Homer', ' ', null, ' ', 'Simpson') |+------------------------------ ---------------+| Homer Simpson |+-------------------------------------------+Tentokrát ignoroval
null
argument a zřetězil všechny zbývající non-null
argumenty. Když se podíváte pozorně, uvidíte, že zřetězil oba prostory, takže meziHomer
je dvojitá mezera aSimpson
.Pro
null
-bezpečná alternativa, použijteCONCAT_WS()
. Tato funkce ignorujenull
hodnoty, i když není v režimu Oracle.Případně můžete použít
IFNULL()
k poskytnutí alternativní (řetězcové) hodnoty pronull
hodnoty (jako je prázdný řetězec).Jeden argument
Volání
CONCAT()
s pouze jedním argumentem jednoduše vrátí tento argument:SELECT CONCAT('Homer');
Výsledek:
+------------------+| CONCAT('Homer') |+------------------+| Homer |+-----------------+Chybí argument
Volání
CONCAT()
bez předání jakýchkoli argumentů dojde k chybě:SELECT CONCAT();
Výsledek:
CHYBA 1582 (42000):Nesprávný počet parametrů ve volání nativní funkce 'CONCAT'