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

TRANSLATE(… USING) Funzione in Oracle

In Oracle, il TRANSLATE(...USING) La funzione converte il suo argomento nel set di caratteri specificato per le conversioni tra il set di caratteri del database e il set di caratteri nazionale.

Questa funzione non deve essere confusa con il TRANSLATE() funzione, che consente di effettuare più sostituzioni uno a uno di un carattere in un'unica operazione.

Il TRANSLATE(...USING) la funzione è supportata in Oracle principalmente per la compatibilità ANSI. Oracle consiglia di utilizzare TO_CHAR() e TO_NCHAR() funzioni invece.

Sintassi

La sintassi è questa:

TRANSLATE ( char USING
          { CHAR_CS | NCHAR_CS }
          )

Dove char è l'espressione da convertire e:

  • Specificare il USING CHAR_CS argomento converte char nel set di caratteri del database. Il tipo di dati di output è VARCHAR2 .
  • Specificare il USING NCHAR_CS argomento converte char nel set di caratteri nazionale. Il tipo di dati di output è NVARCHAR2 .

Esempio

Ecco un esempio di base:

SELECT 
    TRANSLATE('Cat' USING CHAR_CS) AS CHAR_CS,
    TRANSLATE('Cat' USING NCHAR_CS) AS NCHAR_CS
FROM DUAL;

Risultato:

   CHAR_CS    NCHAR_CS 
__________ ___________ 
Cat        Cat        

Per dimostrare la differenza, ecco cosa succede quando lo passiamo a DUMP() funzione:

SELECT 
    DUMP(TRANSLATE('Cat' USING CHAR_CS), 17) AS CHAR_CS,
    DUMP(TRANSLATE('Cat' USING NCHAR_CS), 17) AS NCHAR_CS
FROM DUAL;

Risultato:

              CHAR_CS                       NCHAR_CS 
_____________________ ______________________________ 
Typ=1 Len=3: C,a,t    Typ=1 Len=6: ^@,C,^@,a,^@,t   

Argomenti nulli

Passaggio null poiché l'argomento restituisce null :

SET NULL 'null';
SELECT 
    TRANSLATE(null USING CHAR_CS) AS Result
FROM DUAL;

Risultato:

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.

Argomento mancante

Chiamare la funzione con senza passare il char l'argomento genera un errore:

SELECT TRANSLATE(USING CHAR_CS)
FROM DUAL;

Risultato:

Error starting at line : 1 in command -
SELECT TRANSLATE(USING CHAR_CS)
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: