In Oracle das CONCAT()
-Funktion führt eine Zeichenfolgenverkettung für ihre Argumente durch. Es gibt den String zurück, der sich aus der Verkettung seiner Argumente ergibt.
Verkettung ist der Vorgang, bei dem mehrere Strings Ende-zu-Ende verbunden werden.
Syntax
Die Syntax lautet wie folgt:
CONCAT(char1, char2)
Wobei beide Argumente alle Datentypen CHAR
sein können , VARCHAR2
, NCHAR
, NVARCHAR2
, CLOB
, oder NCLOB
.
Beispiel
Hier ist ein einfaches Beispiel zur Veranschaulichung:
SELECT CONCAT('Ponzi', 'Invest')
FROM DUAL;
Ergebnis:
CONCAT('PONZI','INVEST') ___________________________ PonziInvest
Nullwerte
Verketten eines Strings mit null
gibt den String zurück:
SET NULL 'null';
SELECT
CONCAT('Ponzi', null),
CONCAT(null, 'Invest')
FROM DUAL;
Ergebnis:
CONCAT('PONZI',NULL) CONCAT(NULL,'INVEST') _______________________ ________________________ Ponzi Invest
Aber wenn beide Argumente null
sind , ist das Ergebnis null
:
SET NULL 'null';
SELECT CONCAT(null, null)
FROM DUAL;
Ergebnis:
CONCAT(NULL,NULL) ____________________ null
Standardmäßig geben SQLcl und SQL*Plus ein Leerzeichen zurück, wenn null
tritt als Ergebnis eines SQL SELECT
auf Erklärung.
Sie können jedoch SET NULL
verwenden um eine andere Zeichenfolge anzugeben, die zurückgegeben werden soll. Hier habe ich angegeben, dass der String null
zurückgegeben werden soll.
Falsche Argumentanzahl
Aufruf von CONCAT()
ohne Übergabe von Argumenten gibt einen Fehler zurück:
SELECT CONCAT()
FROM DUAL;
Ergebnis:
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:
Und das Übergeben der falschen Anzahl von Argumenten führt zu einem Fehler:
SELECT CONCAT('Gosh', 'Dang', 'Investments')
FROM DUAL;
Ergebnis:
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:
Zeichensatz &Datentyp
Der resultierende String hat denselben Zeichensatz wie das erste Argument, sein Datentyp hängt jedoch von den Datentypen der Argumente ab.
Beim Verketten zweier unterschiedlicher Datentypen gibt Oracle Database den Datentyp zurück, der zu einer verlustfreien Konvertierung führt. Wenn also eines der Argumente ein LOB ist, ist der zurückgegebene Wert ein LOB. Wenn eines der Argumente ein nationaler Datentyp ist, dann ist der zurückgegebene Wert ein nationaler Datentyp.
Beispiele:
CONCAT
(CLOB
,NCLOB
) gibtNCLOB
zurückCONCAT
(NCLOB
,NCHAR
) gibtNCLOB
zurückCONCAT
(NCLOB
,CHAR
) gibtNCLOB
zurückCONCAT
(NCHAR
,CLOB
) gibtNCLOB
zurück