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

Função COLLATION() no Oracle


No banco de dados Oracle, o COLLATION() A função retorna o nome do agrupamento derivado para seu argumento.

Sintaxe


A sintaxe fica assim:
COLLATION(expr)

Onde expr deve avaliar para uma cadeia de caracteres do tipo CHAR , VARCHAR2 , LONG , NCHAR , ou NVARCHAR2 .

Exemplo


Segue um exemplo básico:
SELECT COLLATION('Boat')
FROM DUAL;

Resultado:
USING_NLS_COMP

Exemplo com o COLLATE Cláusula


Veja o que acontece quando usamos o COLLATE cláusula para especificar explicitamente o agrupamento:
SELECT COLLATION('Boat' COLLATE LATIN_AI) 
FROM DUAL;

Resultado:
LATIN_AI

Consideração ao usar NLS_SORT


O COLLATION() A função retorna apenas o agrupamento vinculado a dados, e não o agrupamento dinâmico definido pelo NLS_SORT parâmetro.

Exemplo:
SELECT COLLATION('Boat' COLLATE USING_NLS_SORT) 
FROM DUAL;

Resultado:
USING_NLS_SORT

Você pode usar o SYS_CONTEXT() função para retornar o valor do NLS_SORT parâmetro:
SELECT SYS_CONTEXT('USERENV','NLS_SORT')
FROM DUAL;

Resultado:
BINARY

No entanto, qualquer sufixo como _CI , _AI e _CS é retornado:
SELECT 
    COLLATION('Boat' COLLATE USING_NLS_SORT_CI) AS "_CI",
    COLLATION('Boat' COLLATE USING_NLS_SORT_CS) AS "_CS",
    COLLATION('Boat' COLLATE USING_NLS_SORT_AI) AS "_AI"
FROM DUAL;

Resultado:
                 _CI                  _CS                  _AI 
____________________ ____________________ ____________________ 
USING_NLS_SORT_CI    USING_NLS_SORT_CS    USING_NLS_SORT_AI    

Argumento nulo


O agrupamento é retornado, mesmo ao passar null :
SELECT COLLATION(null)
FROM DUAL;

Resultado:
USING_NLS_COMP

Contagem incorreta de argumentos


Chamar a função sem passar nenhum argumento resulta em um erro:
SELECT COLLATION()
FROM DUAL;

Resultado:
Error starting at line : 1 in command -
SELECT COLLATION()
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:

E passar muitos argumentos também resulta em um erro:
SELECT COLLATION('Boat', 'Dang')
FROM DUAL;

Resultado:
Error starting at line : 1 in command -
SELECT COLLATION('Boat', 'Dang')
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: