MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Jak działa funkcja CONCAT_WS() w MariaDB

W MariaDB, CONCAT_WS() jest wbudowaną funkcją ciągu, która oznacza Concatenate With Separator.

CONCAT_WS() wykonuje konkatenację ciągów na swoich argumentach, przy czym pierwszy argument jest separatorem dla pozostałych argumentów.

Konkatenacja to operacja łączenia dwóch lub więcej ciągów od końca do końca.

CONCAT_WS() akceptuje dwa lub więcej argumentów (chociaż podanie tylko dwóch argumentów nie skutkowałoby łączeniem niczego, ponieważ pierwszy argument jest separatorem, a drugi pojedynczym ciągiem, który należy połączyć z… niczym więcej).

Składnia

Składnia wygląda tak:

CONCAT_WS(separator,str1,str2,...)

Gdzie separator to ciąg znaków, który ma być używany jako separator, a str1, str2, … reprezentują argumenty ciągu, dla których należy łączyć.

Przykład

Oto podstawowy przykład:

SELECT CONCAT_WS( ', ', 'Milk', 'Cheese', 'Bread');

Wynik:

+---------------------------------------------+
| CONCAT_WS( ', ', 'Milk', 'Cheese', 'Bread') |
+---------------------------------------------+
| Milk, Cheese, Bread                         |
+---------------------------------------------+

W tym przypadku połączyliśmy trzy ciągi znaków, używając przecinka i spacji jako separatora.

Oto kolejny, który używa innego separatora:

SELECT CONCAT_WS('-', 'Blue', 'Red', 'Green');

Wynik:

+----------------------------------------+
| CONCAT_WS('-', 'Blue', 'Red', 'Green') |
+----------------------------------------+
| Blue-Red-Green                         |
+----------------------------------------+

CONCAT_WS() jest podobny do CONCAT() funkcjonować. Jedna z zalet CONCAT_WS() ponad CONCAT() staje się widoczne podczas łączenia wielu ciągów.

Aby wykonać poprzedni przykład za pomocą CONCAT() , musielibyśmy powtórzyć separator pomiędzy każdym ciągiem.

Tak:

SELECT CONCAT('Blue', '-', 'Red', '-', 'Green');

Wynik:

+------------------------------------------+
| CONCAT('Blue', '-', 'Red', '-', 'Green') |
+------------------------------------------+
| Blue-Red-Green                           |
+------------------------------------------+

To mogłoby stać się nieporęczne, gdybyśmy mieli dużo ciągów do połączenia.

Brak separatora

Podanie pustego ciągu jako separatora łączy ciągi bez separatora:

SELECT CONCAT_WS('', 'Blue', 'Red', 'Green');

Wynik:

+---------------------------------------+
| CONCAT_WS('', 'Blue', 'Red', 'Green') |
+---------------------------------------+
| BlueRedGreen                          |
+---------------------------------------+

W tym przypadku otrzymamy ten sam wynik, jaki otrzymalibyśmy przy użyciu CONCAT() aby połączyć te trzy ciągi.

Ważne jest, aby podać separator, nawet jeśli jest pusty. Niepodanie separatora spowoduje, że pierwszy ciąg konkatenacji zostanie użyty jako separator, co prawdopodobnie nie jest tym, czego chcesz.

Przykład:

SELECT CONCAT_WS('Blue', 'Red', 'Green', 'Orange');

Wynik:

+---------------------------------------------+
| CONCAT_WS('Blue', 'Red', 'Green', 'Orange') |
+---------------------------------------------+
| RedBlueGreenBlueOrange                      |
+---------------------------------------------+

W tym przypadku Blue jest pierwszym argumentem, więc jest używany jako separator.

Łączenie argumentów zerowych

Kolejna korzyść, jaką CONCAT_WS() ma ponad CONCAT() jest to, że jest null -bezpieczna.

Jeśli którykolwiek z argumentów do połączenia jest null , CONCAT_WS() ignoruje je. CONCAT() z drugiej strony funkcja zwraca null (chyba że jest w trybie Oracle, w takim przypadku ignoruje null argumenty).

Zadzwońmy do CONCAT_WS() z null argument:

SELECT CONCAT_WS('-', 'Blue', NULL, 'Green');

Wynik:

+---------------------------------------+
| CONCAT_WS('-', 'Blue', NULL, 'Green') |
+---------------------------------------+
| Blue-Green                            |
+---------------------------------------+

Zgodnie z oczekiwaniami, CONCAT_WS() pominął argument null i połączył pozostałe argumenty.

Oznacza to, że jeśli dostarczymy pusty ciąg jako separator, możemy użyć CONCAT_WS() jako null -bezpieczna wersja CONCAT() :

SELECT CONCAT_WS('', 'Blue', NULL, 'Green');

Wynik:

+--------------------------------------+
| CONCAT_WS('', 'Blue', NULL, 'Green') |
+--------------------------------------+
| BlueGreen                            |
+--------------------------------------+

separator zerowy

Zapewnienie null separator to inna historia. Spowoduje to zwrócenie null .

SELECT CONCAT_WS(NULL, 'Blue', 'Red', 'Green');

Wynik:

+-----------------------------------------+
| CONCAT_WS(NULL, 'Blue', 'Red', 'Green') |
+-----------------------------------------+
| NULL                                    |
+-----------------------------------------+

Ciągi binarne

Jeśli którykolwiek z argumentów jest ciągiem binarnym, wynikiem jest ciąg binarny:

SELECT CONCAT_WS(', ', BINARY 'Apple', 'Orange');

Wynik:

+-------------------------------------------+
| CONCAT_WS(', ', BINARY 'Apple', 'Orange') |
+-------------------------------------------+
| Apple, Orange                             |
+-------------------------------------------+

Możemy użyć COLLATION() funkcja sprawdzania sortowania wyniku:

SELECT COLLATION(CONCAT_WS(', ', BINARY 'Apple', 'Orange'));

Wynik:

+------------------------------------------------------+
| COLLATION(CONCAT_WS(', ', BINARY 'Apple', 'Orange')) |
+------------------------------------------------------+
| binary                                               |
+------------------------------------------------------+

Jeśli usuniemy BINARY operatora, otrzymujemy inny wynik:

SELECT COLLATION(CONCAT_WS(', ', 'Apple', 'Orange'));

Wynik:

+-----------------------------------------------+
| COLLATION(CONCAT_WS(', ', 'Apple', 'Orange')) |
+-----------------------------------------------+
| utf8_general_ci                               |
+-----------------------------------------------+

Pojedynczy argument

Wywołanie CONCAT_WS() z tylko jednym argumentem zwraca błąd:

SELECT CONCAT_WS('Blue');

Wynik:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'CONCAT_WS'

Brakujące argumenty

Wywołanie CONCAT_WS() bez przekazania żadnych argumentów powoduje błąd:

SELECT CONCAT_WS();

Wynik:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'CONCAT_WS'

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak działa MINUTE() w MariaDB

  2. Znajdź wszystkie wartości nieliczbowe w kolumnie w MariaDB

  3. Jak chronić bazę danych MySQL i MariaDB przed cyberatakami w sieci publicznej?

  4. Jak działa ACOS() w MariaDB

  5. Jak zainstalować i zabezpieczyć MariaDB 10 w CentOS 7?