No banco de dados Oracle, o
ASCII()
A função retorna a representação decimal no conjunto de caracteres do banco de dados do primeiro caractere de seu argumento. Sintaxe
A sintaxe fica assim:
ASCII(char)
Onde
char
é do tipo de dados CHAR
, VARCHAR2
, NCHAR
, ou NVARCHAR2
. ASCII()
retorna o valor numérico ASCII apenas do primeiro caractere dessa string. Exemplo
Aqui está um exemplo simples para demonstrar:
SELECT ASCII('Oracle')
FROM DUAL;
Resultado:
79
Isso nos diz que a letra maiúscula
O
tem o valor numérico ASCII de 79
. Como mencionado,
ASCII()
retorna apenas o valor ASCII do primeiro personagem. Portanto, o seguinte produz o mesmo resultado:SELECT ASCII('O')
FROM DUAL;
Resultado:
79
Para demonstrar isso ainda mais, vamos obter o valor numérico ASCII de cada letra na string acima:
SELECT
ASCII('O') AS "O",
ASCII('r') AS "r",
ASCII('a') AS "a",
ASCII('c') AS "c",
ASCII('l') AS "l",
ASCII('e') AS "e"
FROM DUAL;
Resultado:
O r a c l e _____ ______ _____ _____ ______ ______ 79 114 97 99 108 101
Sensibilidade de maiúsculas e minúsculas
Letras maiúsculas têm um valor ASCII diferente de seus equivalentes em minúsculas.
Exemplo:
SELECT
ASCII('R') AS "R",
ASCII('r') AS "r"
FROM DUAL;
Resultado:
R r _____ ______ 82 114
Um exemplo de banco de dados
Aqui está um exemplo de uso de
ASCII()
em uma consulta de banco de dados:SELECT
first_name,
ASCII(first_name) AS "ASCII value of leftmost character"
FROM employees
FETCH FIRST 10 ROWS ONLY;
Resultado:
FIRST_NAME ASCII value of leftmost character _____________ ____________________________________ Ellen 69 Sundar 83 Mozhe 77 David 68 Hermann 72 Shelli 83 Amit 65 Elizabeth 69 Sarah 83 David 68
Caractere mais à direita
Aqui, eu uso o
SUBSTR()
função para retornar o caractere mais à direita de cada nome de animal de estimação e, em seguida, usá-lo novamente com o ASCII()
função para retornar o valor ASCII para esse caractere. SELECT
first_name,
SUBSTR(first_name, -1) AS "Rightmost character",
ASCII(SUBSTR(first_name, -1)) AS "ASCII"
FROM employees
FETCH FIRST 10 ROWS ONLY;
Resultado:
FIRST_NAME Rightmost character ASCII _____________ ______________________ ________ Ellen n 110 Sundar r 114 Mozhe e 101 David d 100 Hermann n 110 Shelli i 105 Amit t 116 Elizabeth h 104 Sarah h 104 David d 100
Strings vazias
Fornecer uma string vazia resulta em
null
sendo devolvido. SET NULL 'null';
SELECT ASCII('')
FROM DUAL;
Resultado:
ASCII('') ____________ 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. Valores nulos
Passando
null
resulta em null
:SELECT ASCII(null)
FROM DUAL;
Resultado:
ASCII(NULL) ______________ null
Argumento ausente
Chamar a função com sem passar um argumento resulta em um erro:
SELECT ASCII()
FROM DUAL;
Resultado:
Error starting at line : 1 in command - SELECT ASCII() 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:
É o mesmo quando muitos argumentos são passados:
SELECT ASCII('a', 'b')
FROM DUAL;
Resultado:
Error starting at line : 1 in command - SELECT ASCII('a', 'b') 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: