V Oracle je to CONCAT()
funkce provádí zřetězení řetězců na svých argumentech. Vrací řetězec, který je výsledkem zřetězení jeho argumentů.
Zřetězení je operace spojování více řetězců end-to-end.
Syntaxe
Syntaxe vypadá takto:
CONCAT(char1, char2)
Kde oba argumenty mohou být libovolného datového typu CHAR
, VARCHAR2
, NCHAR
, NVARCHAR2
, CLOB
nebo NCLOB
.
Příklad
Zde je jednoduchý příklad k demonstraci:
SELECT CONCAT('Ponzi', 'Invest')
FROM DUAL;
Výsledek:
CONCAT('PONZI','INVEST') ___________________________ PonziInvest
Nulové hodnoty
Zřetězení řetězce pomocí null
vrátí řetězec:
SET NULL 'null';
SELECT
CONCAT('Ponzi', null),
CONCAT(null, 'Invest')
FROM DUAL;
Výsledek:
CONCAT('PONZI',NULL) CONCAT(NULL,'INVEST') _______________________ ________________________ Ponzi Invest
Ale pokud jsou oba argumenty null
, výsledkem je null
:
SET NULL 'null';
SELECT CONCAT(null, null)
FROM DUAL;
Výsledek:
CONCAT(NULL,NULL) ____________________ null
Ve výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo vždy, když null
dochází v důsledku SQL SELECT
prohlášení.
Můžete však použít SET NULL
určit jiný řetězec, který má být vrácen. Zde jsem uvedl, že řetězec null
by měl být vrácen.
Nesprávný počet argumentů
Volání CONCAT()
bez předání jakýchkoli argumentů vrátí chybu:
SELECT CONCAT()
FROM DUAL;
Výsledek:
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:
A předání nesprávného počtu argumentů má za následek chybu:
SELECT CONCAT('Gosh', 'Dang', 'Investments')
FROM DUAL;
Výsledek:
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:
Znaková sada a typ dat
Výsledný řetězec je ve stejné znakové sadě jako první argument, ale jeho datový typ závisí na datových typech argumentů.
Při zřetězení dvou různých datových typů Oracle Database vrátí datový typ, jehož výsledkem je bezztrátový převod. Pokud je tedy jeden z argumentů LOB, vrácená hodnota je LOB. Pokud je jedním z argumentů národní datový typ, pak vrácená hodnota je národní datový typ.
Příklady:
CONCAT
(CLOB
,NCLOB
) vrátíNCLOB
CONCAT
(NCLOB
,NCHAR
) vrátíNCLOB
CONCAT
(NCLOB
,CHAR
) vrátíNCLOB
CONCAT
(NCHAR
,CLOB
) vrátíNCLOB