sql >> Database >  >> RDS >> MariaDB

Hoe CONCAT() werkt in MariaDB

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'

  1. Oracle sql tutorial :De dataset beperken

  2. Hoe de waitevent Geschiedenis van de Oracle-sessie te vinden

  3. Hoe MAX() te gebruiken voor een subqueryresultaat?

  4. Het standaarddatabase-e-mailprofiel voor een gebruiker in SQL Server (T-SQL) wijzigen