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

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

В MariaDB, CONCAT() е вградена низова функция, която извършва конкатенация на низове на своите аргументи. Връща низа, който е резултат от конкатенирането на неговите аргументи.

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

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

Синтаксис

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

CONCAT( str1, str2, ... ) 

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

Пример

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

SELECT CONCAT('Homer', 'Jay'); 

Резултат:

+-----------------------+| CONCAT('Homer', 'Jay') |+------------------------+| HomerJay |+-----------------------+

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

Ето го отново, но този път добавяме интервал между тях:

SELECT CONCAT('Homer', ' ', 'Jay'); 

Резултат:

+----------------------------+| CONCAT('Homer', ' ', 'Jay') |+----------------------------+| Хоумър Джей |+-----------------------------+

В този случай свързахме три низа.

Ето го с пет:

SELECT CONCAT('Homer', ' ', 'Jay', ' ', 'Simpson'); 

Резултат:

+----------------------------------------------------+ | CONCAT('Homer', ' ', 'Jay', ' ', 'Simpson') |+---------------------------- -----------------+| Хоумър Джей Симпсън |+----------------------------------------------------- +

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

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

SELECT CONCAT(BINARY 'Homer', 'Jay'); 

Резултат:

+-------------------------------+| CONCAT(BINARY 'Homer', 'Jay') |+------------------------------+| HomerJay |+------------------------------+

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

SELECT COLLATION(CONCAT(BINARY 'Homer', 'Jay')); 

Резултат:

+------------------------------------+| COLLATION(CONCAT(ДВОИЧНО 'Homer', 'Jay')) |+------------------------------------------------ --------+| двоичен |+------------------------------------+

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

SELECT COLLATION(CONCAT('Homer', 'Jay')); 

Резултат:

+---------------------------------+| COLLATION(CONCAT('Homer', 'Jay')) |+---------------------------------- +| utf8_general_ci |+----------------------------------+

Също така, според документацията на MariaDB, числовите аргументи се преобразуват в тяхната еквивалентна форма на двоичен низ. Можете да избегнете това, като направите изрично прехвърляне на типа (използвайки CAST() или CONVERT() ).

Нулеви аргументи

Ако някой от аргументите е null , CONCAT() връща null .

Има обаче едно изключение:Когато сте в режим на Oracle (т.е. sql_mode=ORACLE ), произволен null аргументите просто се игнорират.

Първо, нека видим как CONCAT() се държи в режим по подразбиране.

Задайте нашата сесия на режим по подразбиране:

SET SESSION sql_mode=DEFAULT; 

Сега стартирайте CONCAT() с null аргумент:

SELECT CONCAT('Homer', ' ', null, ' ', 'Simpson'); 

Резултат:

+----------------------------------------------+| CONCAT('Homer', ' ', null, ' ', 'Simpson') |+------------------------------ --------------+| NULL |+-----------------------------------------------------+ 

Както се очаква, резултатът е null .

Сега нека превключим нашата сесия в режим на Oracle:

SET SESSION sql_mode=ORACLE; 

И сега нека изпълним предишния CONCAT() отново пример:

SELECT CONCAT('Homer', ' ', null, ' ', 'Simpson'); 

Резултат:

+----------------------------------------------+| CONCAT('Homer', ' ', null, ' ', 'Simpson') |+------------------------------ --------------+| Хоумър Симпсън |+----------------------------------------------+ 

Този път игнорира null аргумент и конкатенира всички останали не-null аргументи. Ако се вгледате внимателно, ще видите, че свързва двете интервали, така че има двойно интервал между Homer и Simpson .

За null -безопасна алтернатива, използвайте CONCAT_WS() . Тази функция игнорира null стойности, дори когато не е в режим на Oracle.

Като алтернатива можете да използвате IFNULL() за предоставяне на алтернативна (низова) стойност за null стойности (като празен низ).

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

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

SELECT CONCAT('Homer'); 

Резултат:

+-----------------+| CONCAT('Homer') |+----------------+| Омир |+-----------------+

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

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

SELECT CONCAT(); 

Резултат:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Увеличаване на ефективността на заявки към база данни за MySQL - част втора

  2. Как работи RLIKE в MariaDB

  3. Автоматично управление на версиите на данни в MariaDB Server 10.3

  4. MariaDB GROUP_CONCAT()

  5. 2 начина за връщане на редове, които съдържат само буквено-цифрови знаци в MariaDB