No Oracle, o
NLS_CHARSET_ID()
A função retorna o número de ID do conjunto de caracteres de um determinado conjunto de caracteres. Você passa o nome do conjunto de caracteres como um argumento e ele retorna seu ID. Sintaxe
A sintaxe fica assim:
NLS_CHARSET_ID(string)
Onde
string
é o nome do conjunto de caracteres para o qual você deseja retornar o ID. Exemplo
Segue um exemplo básico:
SELECT NLS_CHARSET_ID('AL16UTF16')
FROM DUAL;
Resultado:
2000
Aqui está com um conjunto de caracteres diferente:
SELECT NLS_CHARSET_ID('UTF8')
FROM DUAL;
Resultado:
871
Argumento nulo
Se o argumento for
null
, o resultado é null
:SET NULL 'null';
SELECT NLS_CHARSET_ID(null)
FROM DUAL;
Resultado:
NLS_CHARSET_ID(NULL) _______________________ 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. Nomes de conjuntos de caracteres inválidos
Passar um nome de conjunto de caracteres inválido resulta em
null
:SET NULL 'null';
SELECT NLS_CHARSET_ID('oops')
FROM DUAL;
Resultado:
NLS_CHARSET_ID('OOPS') _________________________ null
Contagem incorreta de argumentos
Chamar a função sem passar nenhum argumento resulta em um erro:
SELECT NLS_CHARSET_ID()
FROM DUAL;
Resultado:
Error starting at line : 1 in command - SELECT NLS_CHARSET_ID() 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:
No entanto, passar vários nomes de conjuntos de caracteres resulta no ID do primeiro sendo retornado:
SELECT NLS_CHARSET_ID('UTF8', 'AL16UTF16')
FROM DUAL;
Resultado:
871