I Oracle er CONCAT()
funktion udfører en strengsammenkædning på sine argumenter. Det returnerer den streng, der er resultatet af sammenkædning af dens argumenter.
Sammenkædning er operationen med at forbinde flere strenge ende-til-ende.
Syntaks
Syntaksen ser sådan ud:
CONCAT(char1, char2)
Hvor begge argumenter kan være en hvilken som helst af datatyperne CHAR
, VARCHAR2
, NCHAR
, NVARCHAR2
, CLOB
eller NCLOB
.
Eksempel
Her er et simpelt eksempel til at demonstrere:
SELECT CONCAT('Ponzi', 'Invest')
FROM DUAL;
Resultat:
CONCAT('PONZI','INVEST') ___________________________ PonziInvest
Nul-værdier
Sammenkædning af en streng med null
returnerer strengen:
SET NULL 'null';
SELECT
CONCAT('Ponzi', null),
CONCAT(null, 'Invest')
FROM DUAL;
Resultat:
CONCAT('PONZI',NULL) CONCAT(NULL,'INVEST') _______________________ ________________________ Ponzi Invest
Men hvis begge argumenter er null
, resultatet er null
:
SET NULL 'null';
SELECT CONCAT(null, null)
FROM DUAL;
Resultat:
CONCAT(NULL,NULL) ____________________ null
Som standard returnerer SQLcl og SQL*Plus et tomt mellemrum, når null
opstår som et resultat af en SQL SELECT
udmelding.
Du kan dog bruge SET NULL
for at angive en anden streng, der skal returneres. Her specificerede jeg, at strengen null
skal returneres.
Forkert antal argumenter
Kalder CONCAT()
uden at sende nogen argumenter returnerer en fejl:
SELECT CONCAT()
FROM DUAL;
Resultat:
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:
Og at sende det forkerte antal argumenter resulterer i en fejl:
SELECT CONCAT('Gosh', 'Dang', 'Investments')
FROM DUAL;
Resultat:
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:
Tegnsæt og datatype
Den resulterende streng er i samme tegnsæt som det første argument, men dens datatype afhænger af argumenternes datatyper.
Når du sammenkæder to forskellige datatyper, returnerer Oracle Database den datatype, der resulterer i en tabsfri konvertering. Derfor, hvis et af argumenterne er en LOB, så er den returnerede værdi en LOB. Hvis et af argumenterne er en national datatype, så er den returnerede værdi en national datatype.
Eksempler:
CONCAT
(CLOB
,NCLOB
) returnererNCLOB
CONCAT
(NCLOB
,NCHAR
) returnererNCLOB
CONCAT
(NCLOB
,CHAR
) returnererNCLOB
CONCAT
(NCHAR
,CLOB
) returnererNCLOB