MariaDB
 sql >> база данни >  >> RDS >> MariaDB

Как CONCAT_WS() работи в MariaDB

В MariaDB, CONCAT_WS() е вградена функция за низ, която означава Concatenate With Separator.

CONCAT_WS() извършва конкатенация на низове върху своите аргументи, като първият аргумент е разделител за останалите аргументи.

Конкатенацията е операцията за свързване на два или повече низове от край до край.

CONCAT_WS() приема два или повече аргумента (въпреки че предоставянето на само два аргумента би довело до нищо не свързано, тъй като първият аргумент е разделител, а вторият е единичен низ, който да бъде свързан с... нищо друго).

Синтаксис

Синтаксисът е така:

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

Където separator е низът, който ще се използва като разделител, и str1, str2, … представляват низовите аргументи, за които да се конкатенира.

Пример

Ето един основен пример:

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

Резултат:

+----------------------------------------------------+ | CONCAT_WS( ', ', 'Мляко', 'Сирене', 'Хляб') |+------------------------------ ---------------+| Мляко, сирене, хляб |+--------------------------------------------------- --+

В този случай съединихме три низа, използвайки запетая и интервал като разделител.

Ето още един, който използва различен разделител:

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

Резултат:

+---------------------------------------+| CONCAT_WS('-', 'Синьо', 'Червено', 'Зелено') |+------------------------------ ----------+| Синьо-Червено-Зелено |+---------------------------------------+ 

CONCAT_WS() е подобен на CONCAT() функция. Едно от предимствата на CONCAT_WS() над CONCAT() става очевидно при конкатениране на много низове.

За да направите предишния пример с CONCAT() , ще трябва да повторим разделителя между всеки низ.

Като това:

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

Резултат:

+------------------------------------+| CONCAT('Синьо', '-', 'Червено', '-', 'Зелено') |+-------------------------- ----------------+| Синьо-червено-зелено |+---------------------------------------------------+ 

Това може да стане тромаво, ако имахме много низове за конкатенация.

Без разделител

Предоставяне на празен низ, тъй като разделителят конкатенира низовете без разделител:

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

Резултат:

+---------------------------------------+| CONCAT_WS('', 'Синьо', 'Червено', 'Зелено') |+------------------------------ --------+| BlueRedGreen |+------------------------------------------------+

В този случай получаваме същия резултат, който бихме получили, когато използваме CONCAT() за да свържете тези три низа.

Важно е да предоставите разделител, дори и да е празен. Ако не предоставите разделител, първият низ за конкатенация ще бъде използван като разделител, което вероятно не е това, което искате.

Пример:

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

Резултат:

+----------------------------------------------------+ | CONCAT_WS('Синьо', 'Червено', 'Зелено', 'Оранжево') |+------------------------------ ---------------+| ЧервеноСиньоЗеленоСиньоОранжево |+-----------------------------------------------------+ 

В този случай Blue е първият аргумент и така в крайна сметка се използва като разделител.

Конкатенация на нулеви аргументи

Друго предимство, което CONCAT_WS() има над CONCAT() е, че е null -безопасно.

Ако някой от аргументите, които трябва да бъдат конкатенирани, е null , CONCAT_WS() ги игнорира. CONCAT() функцията от друга страна връща null (освен ако не е в режим на Oracle, в този случай игнорира null аргументи).

Нека извикаме CONCAT_WS() с null аргумент:

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

Резултат:

+---------------------------------------+| CONCAT_WS('-', 'Синьо', NULL, 'Зелено') |+-------------------------------- -------+| Синьо-зелено |+------------------------------------------------+

Както се очаква, CONCAT_WS() пропусна аргумента null и обедини останалите аргументи.

Това означава, че ако предоставим празен низ като разделител, можем да използваме CONCAT_WS() като null -безопасна версия на CONCAT() :

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

Резултат:

+----------------------------------------+| CONCAT_WS('', 'Синьо', NULL, 'Зелено') |+--------------------------------- -----+| BlueGreen |+----------------------------------------+

Нулев разделител

Предоставяне на null разделител е друга история. Това връща null .

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

Резултат:

+-----------------------------------+| CONCAT_WS(NULL, 'Синьо', 'Червено', 'Зелено') |+-------------------------------- ---------+| NULL |+-----------------------------------+

Двоични низове

Ако някой от аргументите е двоичен низ, резултатът е двоичен низ:

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

Резултат:

+------------------------------------+| CONCAT_WS(', ', BINARY 'Apple', 'Orange') |+-------------------------------- ----------+| Ябълка, портокал |+---------------------------------------------------+ 

Можем да използваме COLLATION() функция за проверка на съпоставянето на резултата:

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

Резултат:

+------------------------------------------------------- --------+| COLLATION(CONCAT_WS(', ', BINARY 'Apple', 'Orange')) |+------------------------------ ------------------------+| двоичен |+-------------------------------------------------------- -------+

Ако премахнем BINARY оператор, получаваме различен резултат:

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

Резултат:

+------------------------------------------------------- -+| COLLATION(CONCAT_WS(', ', 'Ябълка', 'Оранжев')) |+------------------------------ ----------------+| utf8_general_ci |+------------------------------------------------------- +

Единичен аргумент

Извикване на CONCAT_WS() само с един аргумент връща грешка:

SELECT CONCAT_WS('Blue'); 

Резултат:

ГРЕШКА 1582 (42000):Неправилен брой на параметрите в извикването на естествена функция „CONCAT_WS“

Липсващи аргументи

Извикване на CONCAT_WS() без подаване на аргументи води до грешка:

SELECT CONCAT_WS(); 

Резултат:

ГРЕШКА 1582 (42000):Неправилен брой на параметрите в извикването на естествена функция „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. Проектиране на база данни 101:Дялове в MySQL

  2. Как да конвертирате в главни букви в MariaDB

  3. WEEKDAY() срещу DAYOFWEEK() в MariaDB:Каква е разликата?

  4. Сравняване на Amazon RDS Recovery Point-in-Time с ClusterControl

  5. 4 функции, които връщат минутите от времева стойност в MariaDB