sql >> Databáze >  >> RDS >> MariaDB

Jak CONCAT() funguje v MariaDB

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 mezi Homer je dvojitá mezera a Simpson .

Pro null -bezpečná alternativa, použijte CONCAT_WS() . Tato funkce ignoruje null hodnoty, i když není v režimu Oracle.

Případně můžete použít IFNULL() k poskytnutí alternativní (řetězcové) hodnoty pro null 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'

  1. Příklad použití bind_result vs get_result

  2. Jak zálohovat nebo vytvořit novou tabulku ze Stávající tabulky SQL Serveru na SQL Serveru - SQL Server / Výukový program TSQL, část 105

  3. Nejprve vytvořte index řetězce pomocí kódu

  4. Jak zkontrolovat, zda existuje databáze mysql