Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Função NLS_CHARSET_ID() no Oracle


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