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

Função COMPOSE() no Oracle


No banco de dados Oracle, o COMPOSE() A função retorna o resultado da aplicação da composição canônica Unicode, conforme descrito na definição do padrão Unicode D117, ao seu argumento de string.

É o oposto do DECOMPOSE() função.

Sintaxe


A sintaxe fica assim:
COMPOSE(char)

Onde char é um dos CHAR , VARCHAR2 , NCHAR , ou NVARCHAR2 tipos de dados.

Exemplo


Segue um exemplo para demonstrar:
SELECT 
    COMPOSE('a' || UNISTR('\0303'))
FROM DUAL;

Resultado:
ã

Caracteres não Unicode


Se o conjunto de caracteres do argumento não for um dos conjuntos de caracteres Unicode, o argumento será retornado sem modificações.

Exemplo:
SELECT COMPOSE( 'a' )
FROM DUAL;

Resultado:
a

Argumento nulo

Se o argumento for null , o resultado é null :

SET NULL 'null';
SELECT COMPOSE(null)
FROM DUAL;

Resultado:

null

Por padrão, SQLcl e SQL*Plus retornam um espaço em branco sempre que um valor nulo 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.

Contagem de argumentos inválidos

Chamando COMPOSE() sem nenhum argumento resulta em um erro:

SELECT COMPOSE()
FROM DUAL;

Resultado:

SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"

E passar muitos argumentos também resulta em um erro:
SELECT COMPOSE('a', 'b')
FROM DUAL;

Resultado:

SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"