No Oracle, o
TRANSLATE(...USING) A função converte seu argumento no conjunto de caracteres especificado para conversões entre o conjunto de caracteres do banco de dados e o conjunto de caracteres nacional. Esta função não deve ser confundida com o
TRANSLATE() função, que permite fazer várias substituições um para um de caractere único em uma operação. O
TRANSLATE(...USING) A função é suportada no Oracle principalmente para compatibilidade com ANSI. A Oracle recomenda que usemos o TO_CHAR() e TO_NCHAR() funções em vez disso. Sintaxe
A sintaxe fica assim:
TRANSLATE ( char USING
{ CHAR_CS | NCHAR_CS }
) Onde
char é a expressão a ser convertida, e:- Especificando o
USINGCHAR_CSargumento convertecharno conjunto de caracteres do banco de dados. O tipo de dados de saída éVARCHAR2. - Especificando o
USINGNCHAR_CSargumento convertecharno conjunto de caracteres nacional. O tipo de dados de saída éNVARCHAR2.
Exemplo
Segue um exemplo básico:
SELECT
TRANSLATE('Cat' USING CHAR_CS) AS CHAR_CS,
TRANSLATE('Cat' USING NCHAR_CS) AS NCHAR_CS
FROM DUAL; Resultado:
CHAR_CS NCHAR_CS __________ ___________ Cat Cat
Para demonstrar a diferença, veja o que acontece quando passamos para o
DUMP() função:SELECT
DUMP(TRANSLATE('Cat' USING CHAR_CS), 17) AS CHAR_CS,
DUMP(TRANSLATE('Cat' USING NCHAR_CS), 17) AS NCHAR_CS
FROM DUAL; Resultado:
CHAR_CS NCHAR_CS _____________________ ______________________________ Typ=1 Len=3: C,a,t Typ=1 Len=6: ^@,C,^@,a,^@,t
Argumentos nulos
Passando
null pois o argumento retorna null :SET NULL 'null';
SELECT
TRANSLATE(null USING CHAR_CS) AS Result
FROM DUAL; Resultado:
null
Por padrão, SQLcl e SQL*Plus retornam um espaço em branco sempre que
null ocorre como resultado de um SQL SELECT demonstração. No entanto, você pode usar
SET NULL para especificar uma string diferente a ser retornada. Aqui eu especifiquei que a string null deve ser devolvido. Argumento ausente
Chamando a função sem passar o
char argumento resulta em um erro:SELECT TRANSLATE(USING CHAR_CS)
FROM DUAL; Resultado:
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: