W MariaDB CONCAT() jest wbudowaną funkcją ciągu, która wykonuje konkatenację ciągów na swoich argumentach. Zwraca ciąg, który wynika z połączenia jego argumentów.
Konkatenacja to operacja łączenia dwóch lub więcej ciągów od końca do końca.
CONCAT() akceptuje jeden lub więcej argumentów, z których wszystkie są zwracane jako jeden połączony ciąg.
Składnia
Składnia wygląda tak:
CONCAT( str1, str2, ... )
Gdzie str1, str2, … reprezentują argumenty ciągu, dla których należy łączyć.
Przykład
Oto podstawowy przykład:
SELECT CONCAT('Homer', 'Jay'); Wynik:
+------------------------+
| CONCAT('Homer', 'Jay') |
+------------------------+
| HomerJay |
+------------------------+ W tym przypadku połączyliśmy dwa ciągi.
I znowu, ale tym razem dodajemy spację pomiędzy:
SELECT CONCAT('Homer', ' ', 'Jay'); Wynik:
+-----------------------------+
| CONCAT('Homer', ' ', 'Jay') |
+-----------------------------+
| Homer Jay |
+-----------------------------+ W tym przypadku połączyliśmy trzy ciągi.
Oto pięć:
SELECT CONCAT('Homer', ' ', 'Jay', ' ', 'Simpson'); Wynik:
+---------------------------------------------+
| CONCAT('Homer', ' ', 'Jay', ' ', 'Simpson') |
+---------------------------------------------+
| Homer Jay Simpson |
+---------------------------------------------+ Ciągi binarne
Jeśli którykolwiek z argumentów jest ciągiem binarnym, wynikiem jest ciąg binarny:
SELECT CONCAT(BINARY 'Homer', 'Jay'); Wynik:
+-------------------------------+ | CONCAT(BINARY 'Homer', 'Jay') | +-------------------------------+ | HomerJay | +-------------------------------+
Możemy użyć COLLATION() funkcja sprawdzania sortowania wyniku:
SELECT COLLATION(CONCAT(BINARY 'Homer', 'Jay')); Wynik:
+------------------------------------------+ | COLLATION(CONCAT(BINARY 'Homer', 'Jay')) | +------------------------------------------+ | binary | +------------------------------------------+
Jeśli usuniemy BINARY operatora, otrzymujemy inny wynik:
SELECT COLLATION(CONCAT('Homer', 'Jay')); Wynik:
+-----------------------------------+
| COLLATION(CONCAT('Homer', 'Jay')) |
+-----------------------------------+
| utf8_general_ci |
+-----------------------------------+
Ponadto, zgodnie z dokumentacją MariaDB, argumenty liczbowe są konwertowane na ich równoważną postać ciągu binarnego. Możesz tego uniknąć, wykonując jawne rzutowanie typu (za pomocą CAST() lub CONVERT() ).
Argumenty zerowe
Jeśli którykolwiek z argumentów jest null , CONCAT() zwraca null .
Jest jednak jeden wyjątek:w trybie Oracle (tj. sql_mode=ORACLE ), dowolne null argumenty są po prostu ignorowane.
Najpierw zobaczmy, jak CONCAT() zachowuje się w trybie domyślnym.
Ustaw naszą sesję w trybie domyślnym:
SET SESSION sql_mode=DEFAULT;
Teraz uruchom CONCAT() z null argument:
SELECT CONCAT('Homer', ' ', null, ' ', 'Simpson'); Wynik:
+--------------------------------------------+
| CONCAT('Homer', ' ', null, ' ', 'Simpson') |
+--------------------------------------------+
| NULL |
+--------------------------------------------+
Zgodnie z oczekiwaniami wynik to null .
Przejdźmy teraz do trybu Oracle:
SET SESSION sql_mode=ORACLE;
A teraz uruchommy poprzednią CONCAT() przykład ponownie:
SELECT CONCAT('Homer', ' ', null, ' ', 'Simpson'); Wynik:
+--------------------------------------------+
| CONCAT('Homer', ' ', null, ' ', 'Simpson') |
+--------------------------------------------+
| Homer Simpson |
+--------------------------------------------+
Tym razem zignorował null argument i połączył wszystkie pozostałe wartości inne niż null argumenty. Jeśli przyjrzysz się uważnie, zobaczysz, że połączył on obie spacje, więc między Homer jest podwójna spacja i Simpson .
Dla null -bezpieczna alternatywa, użyj CONCAT_WS() . Ta funkcja ignoruje null wartości, nawet jeśli nie są w trybie Oracle.
Alternatywnie możesz użyć IFNULL() aby zapewnić alternatywną (ciągową) wartość dla null wartości (takie jak pusty ciąg).
Pojedynczy argument
Wywołanie CONCAT() z tylko jednym argumentem po prostu zwraca ten argument:
SELECT CONCAT('Homer'); Wynik:
+-----------------+
| CONCAT('Homer') |
+-----------------+
| Homer |
+-----------------+ Brakujący argument
Wywołanie CONCAT() bez przekazywania jakichkolwiek argumentów powoduje błąd:
SELECT CONCAT(); Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'CONCAT'