В 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“