In Oracle, de CONCAT()
functie voert een tekenreeksaaneenschakeling uit op zijn argumenten. Het geeft de string terug die het resultaat is van het aaneenschakelen van zijn argumenten.
Concatenatie is de bewerking waarbij meerdere strings end-to-end worden samengevoegd.
Syntaxis
De syntaxis gaat als volgt:
CONCAT(char1, char2)
Waarbij beide argumenten elk van de gegevenstypen CHAR
. kunnen zijn , VARCHAR2
, NCHAR
, NVARCHAR2
, CLOB
, of NCLOB
.
Voorbeeld
Hier is een eenvoudig voorbeeld om te demonstreren:
SELECT CONCAT('Ponzi', 'Invest')
FROM DUAL;
Resultaat:
CONCAT('PONZI','INVEST') ___________________________ PonziInvest
Null-waarden
Een string samenvoegen met null
geeft de string terug:
SET NULL 'null';
SELECT
CONCAT('Ponzi', null),
CONCAT(null, 'Invest')
FROM DUAL;
Resultaat:
CONCAT('PONZI',NULL) CONCAT(NULL,'INVEST') _______________________ ________________________ Ponzi Invest
Maar als beide argumenten null
zijn , het resultaat is null
:
SET NULL 'null';
SELECT CONCAT(null, null)
FROM DUAL;
Resultaat:
CONCAT(NULL,NULL) ____________________ null
Standaard retourneren SQLcl en SQL*Plus een spatie wanneer null
treedt op als resultaat van een SQL SELECT
uitspraak.
U kunt echter SET NULL
. gebruiken om een andere tekenreeks op te geven die moet worden geretourneerd. Hier heb ik gespecificeerd dat de string null
moet worden geretourneerd.
Onjuist aantal argumenten
CONCAT()
. aanroepen zonder het doorgeven van argumenten geeft een fout:
SELECT CONCAT()
FROM DUAL;
Resultaat:
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:
En het doorgeven van het verkeerde aantal argumenten resulteert in een fout:
SELECT CONCAT('Gosh', 'Dang', 'Investments')
FROM DUAL;
Resultaat:
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:
Tekenset en gegevenstype
De resulterende string heeft dezelfde tekenset als het eerste argument, maar het datatype hangt af van het datatype van de argumenten.
Bij het aaneenschakelen van twee verschillende gegevenstypen, retourneert Oracle Database het gegevenstype dat resulteert in een conversie zonder verlies. Daarom, als een van de argumenten een LOB is, is de geretourneerde waarde een LOB. Als een van de argumenten een nationaal gegevenstype is, is de geretourneerde waarde een nationaal gegevenstype.
Voorbeelden:
CONCAT
(CLOB
,NCLOB
) retourneertNCLOB
CONCAT
(NCLOB
,NCHAR
) retourneertNCLOB
CONCAT
(NCLOB
,CHAR
) retourneertNCLOB
CONCAT
(NCHAR
,CLOB
) retourneertNCLOB