No Oracle Database, o ASCIISTR()
A função retorna uma versão ASCII da string fornecida no conjunto de caracteres do banco de dados.
Sintaxe
A sintaxe é assim:
ASCIISTR(char)
Onde char
é uma string ou uma expressão que resolve para uma string, em qualquer conjunto de caracteres.
Caracteres não ASCII são convertidos no formato \xxxx
, onde xxxx
representa uma unidade de código UTF-16.
Exemplo
Aqui está um exemplo:
SELECT ASCIISTR('Fish')
FROM DUAL;
Resultado:
Fish
Nesse caso, o resultado é o mesmo da entrada, pois a entrada utilizou caracteres ASCII.
Aqui está outro que usa caracteres não ASCII:
SELECT ASCIISTR('ปลา')
FROM DUAL;
Resultado:
\0E1B\0E25\0E32
Aqui, obtemos cada um dos três caracteres retornados em seus equivalentes ASCII.
Neste caso, a entrada (
ปลา
) é a palavra tailandesa para “peixe”. Isso pode ser pronunciado como “Plā”. Veja o que acontece quando passamos
Plā
para o ASCIISTR()
função:SELECT ASCIISTR('Plā')
FROM DUAL;
Resultado:
Pl\0101
Nesse caso, os dois primeiros caracteres que passamos são caracteres ASCII, mas o terceiro caractere não é ASCII. Portanto, a função retorna os dois primeiros caracteres inalterados e o terceiro convertido para ASCII.
Aqui está outro que passa
น้ำ
, que é a palavra tailandesa para “água”:SELECT ASCIISTR('น้ำ')
FROM DUAL;
Resultado:
\0E19\0E49\0E33
Valores nulos
Se o argumento for null
, o resultado é null
:
SET NULL 'null';
SELECT ASCIISTR(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 ASCIISTR()
sem nenhum argumento resulta em um erro:
SELECT ASCIISTR()
FROM DUAL;
Resultado:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"