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

Função ASCII() no Oracle


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: