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: