Oracle
 sql >> Database >  >> RDS >> Oracle

CONCAT() Funzione in Oracle

In Oracle, il CONCAT() La funzione esegue una concatenazione di stringhe sui suoi argomenti. Restituisce la stringa che risulta dalla concatenazione dei suoi argomenti.

La concatenazione è l'operazione di unione di più stringhe end-to-end.

Sintassi

La sintassi è questa:

CONCAT(char1, char2)

Dove entrambi gli argomenti possono essere uno qualsiasi dei tipi di dati CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB o NCLOB .

Esempio

Ecco un semplice esempio da dimostrare:

SELECT CONCAT('Ponzi', 'Invest')
FROM DUAL;

Risultato:

   CONCAT('PONZI','INVEST') 
___________________________ 
PonziInvest                

Valori Nulli

Concatenare una stringa con null restituisce la stringa:

SET NULL 'null';

SELECT 
    CONCAT('Ponzi', null),
    CONCAT(null, 'Invest')
FROM DUAL;

Risultato:

   CONCAT('PONZI',NULL)    CONCAT(NULL,'INVEST') 
_______________________ ________________________ 
Ponzi                   Invest                   

Ma se entrambi gli argomenti sono null , il risultato è null :

SET NULL 'null';

SELECT CONCAT(null, null)
FROM DUAL;

Risultato:

   CONCAT(NULL,NULL) 
____________________ 
null                

Per impostazione predefinita, SQLcl e SQL*Plus restituiscono uno spazio vuoto ogni volta che null si verifica come risultato di un SQL SELECT dichiarazione.

Tuttavia, puoi utilizzare SET NULL per specificare una stringa diversa da restituire. Qui ho specificato che la stringa null deve essere restituito.

Conteggio argomenti errato

Chiamando CONCAT() senza passare alcun argomento restituisce un errore:

SELECT CONCAT()
FROM DUAL;

Risultato:

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:

E il passaggio del numero errato di argomenti genera un errore:

SELECT CONCAT('Gosh', 'Dang', 'Investments')
FROM DUAL;

Risultato:

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:

Set di caratteri e tipo di dati

La stringa risultante è nello stesso set di caratteri del primo argomento, tuttavia il suo tipo di dati dipende dai tipi di dati degli argomenti.

Quando si concatenano due diversi tipi di dati, Oracle Database restituisce il tipo di dati che risulta in una conversione senza perdita di dati. Pertanto, se uno degli argomenti è un LOB, il valore restituito è un LOB. Se uno degli argomenti è un tipo di dati nazionale, il valore restituito è un tipo di dati nazionale.

Esempi:

  • CONCAT (CLOB , NCLOB ) restituisce NCLOB
  • CONCAT (NCLOB , NCHAR ) restituisce NCLOB
  • CONCAT (NCLOB , CHAR ) restituisce NCLOB
  • CONCAT (NCHAR , CLOB ) restituisce NCLOB