Oracle
 sql >> Datenbank >  >> RDS >> Oracle

CONCAT()-Funktion in Oracle

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 ) gibt NCLOB zurück
  • CONCAT (NCLOB , NCHAR ) gibt NCLOB zurück
  • CONCAT (NCLOB , CHAR ) gibt NCLOB zurück
  • CONCAT (NCHAR , CLOB ) gibt NCLOB zurück