В Oracle, CONCAT()
функцията извършва конкатенация на низове на своите аргументи. Връща низа, който е резултат от конкатенирането на неговите аргументи.
Конкатенацията е операция на свързване на множество низове от край до край.
Синтаксис
Синтаксисът е така:
CONCAT(char1, char2)
Когато и двата аргумента могат да бъдат всеки от типовете данни CHAR
, VARCHAR2
, NCHAR
, NVARCHAR2
, CLOB
или NCLOB
.
Пример
Ето един прост пример за демонстрация:
SELECT CONCAT('Ponzi', 'Invest')
FROM DUAL;
Резултат:
CONCAT('PONZI','INVEST') ___________________________ PonziInvest
Нулеви стойности
Конкатенация на низ с null
връща низа:
SET NULL 'null';
SELECT
CONCAT('Ponzi', null),
CONCAT(null, 'Invest')
FROM DUAL;
Резултат:
CONCAT('PONZI',NULL) CONCAT(NULL,'INVEST') _______________________ ________________________ Ponzi Invest
Но ако и двата аргумента са null
, резултатът е null
:
SET NULL 'null';
SELECT CONCAT(null, null)
FROM DUAL;
Резултат:
CONCAT(NULL,NULL) ____________________ null
По подразбиране SQLcl и SQL*Plus връщат празно пространство всеки път, когато null
възниква в резултат на SQL SELECT
изявление.
Можете обаче да използвате SET NULL
за да посочите различен низ, който да бъде върнат. Тук посочих, че низът null
трябва да бъдат върнати.
Неправилен брой аргументи
Извикване на CONCAT()
без подаване на аргументи връща грешка:
SELECT CONCAT()
FROM DUAL;
Резултат:
Error starting at line : 1 in command - SELECT CONCAT() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function" *Cause: *Action:
И предаването на грешен брой аргументи води до грешка:
SELECT CONCAT('Gosh', 'Dang', 'Investments')
FROM DUAL;
Резултат:
Error starting at line : 1 in command - SELECT CONCAT('Gosh', 'Dang', 'Investments') FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action:
Набор от знаци и тип данни
Полученият низ е в същия набор от знаци като първия аргумент, но неговият тип данни зависи от типовете данни на аргументите.
Когато конкатенира два различни типа данни, Oracle Database връща типа данни, който води до преобразуване без загуби. Следователно, ако един от аргументите е LOB, тогава върнатата стойност е LOB. Ако един от аргументите е национален тип данни, тогава върнатата стойност е национален тип данни.
Примери:
CONCAT
(CLOB
,NCLOB
) връщаNCLOB
CONCAT
(NCLOB
,NCHAR
) връщаNCLOB
CONCAT
(NCLOB
,CHAR
) връщаNCLOB
CONCAT
(NCHAR
,CLOB
) връщаNCLOB