sql >> Base de Datos >  >> RDS >> Oracle

Función ASCII() en Oracle

En Oracle Database, el ASCII() La función devuelve la representación decimal en el conjunto de caracteres de la base de datos del primer carácter de su argumento.

Sintaxis

La sintaxis es así:

ASCII(char)

Donde char es del tipo de datos CHAR , VARCHAR2 , NCHAR o NVARCHAR2 .

ASCII() devuelve el valor ASCII numérico de solo el primer carácter de esta cadena.

Ejemplo

Aquí hay un ejemplo simple para demostrarlo:

SELECT ASCII('Oracle')
FROM DUAL;

Resultado:

79

Esto nos dice que la letra mayúscula O tiene el valor ASCII numérico de 79 .

Como se mencionó, ASCII() solo devuelve el valor ASCII del primero personaje. Por lo tanto, lo siguiente produce el mismo resultado:

SELECT ASCII('O')
FROM DUAL;

Resultado:

79

Para demostrar esto aún más, obtengamos el valor ASCII numérico de cada letra en la cadena anterior:

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 

Sensibilidad de mayúsculas y minúsculas

Las letras mayúsculas tienen un valor ASCII diferente al de sus equivalentes en minúsculas.

Ejemplo:

SELECT 
    ASCII('R') AS "R",
    ASCII('r') AS "r"
FROM DUAL;

Resultado:

    R      r 
_____ ______ 
   82    114

Un ejemplo de base de datos

Aquí hay un ejemplo del uso de ASCII() en una consulta de base de datos:

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 

Carácter más a la derecha

Aquí, uso el SUBSTR() función para devolver el carácter más a la derecha de cada nombre de mascota, y luego usarlo nuevamente con el ASCII() para devolver el valor ASCII de ese carácter.

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

Cadenas vacías

Proporcionar una cadena vacía da como resultado null siendo devuelto.

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

Resultado:

   ASCII('') 
____________ 
        null

De forma predeterminada, SQLcl y SQL*Plus devuelven un espacio en blanco cada vez que null ocurre como resultado de un SQL SELECT declaración.

Sin embargo, puede usar SET NULL para especificar una cadena diferente a devolver. Aquí especifiqué que la cadena null debe ser devuelto.

Valores nulos

Pasando null da como resultado null :

SELECT ASCII(null)
FROM DUAL;

Resultado:

   ASCII(NULL) 
______________ 
          null

Argumento faltante

Llamar a la función sin pasar un argumento da como resultado un error:

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:

Es lo mismo cuando se pasan demasiados argumentos:

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: