In Oracle Database, il ASCII()
La funzione restituisce la rappresentazione decimale nel set di caratteri del database del primo carattere del suo argomento.
Sintassi
La sintassi è questa:
ASCII(char)
Dove char
è di tipo di dati CHAR
, VARCHAR2
, NCHAR
o NVARCHAR2
.
ASCII()
restituisce il valore numerico ASCII solo del primo carattere di questa stringa.
Esempio
Ecco un semplice esempio da dimostrare:
SELECT ASCII('Oracle')
FROM DUAL;
Risultato:
79
Questo ci dice che la lettera maiuscola O
ha il valore numerico ASCII di 79
.
Come accennato, ASCII()
restituisce solo il valore ASCII del primo carattere. Pertanto, quanto segue produce lo stesso risultato:
SELECT ASCII('O')
FROM DUAL;
Risultato:
79
Per dimostrarlo ulteriormente, otteniamo il valore numerico ASCII da ciascuna lettera nella stringa sopra:
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;
Risultato:
O r a c l e _____ ______ _____ _____ ______ ______ 79 114 97 99 108 101
Maiuscole/minuscole
Le lettere maiuscole hanno un valore ASCII diverso dai loro equivalenti minuscoli.
Esempio:
SELECT
ASCII('R') AS "R",
ASCII('r') AS "r"
FROM DUAL;
Risultato:
R r _____ ______ 82 114
Un esempio di database
Ecco un esempio di utilizzo di ASCII()
in una query di database:
SELECT
first_name,
ASCII(first_name) AS "ASCII value of leftmost character"
FROM employees
FETCH FIRST 10 ROWS ONLY;
Risultato:
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
Personaggio più a destra
Qui, uso il SUBSTR()
funzione per restituire il carattere più a destra di ogni pet name, quindi utilizzarlo di nuovo con ASCII()
funzione per restituire il valore ASCII per quel carattere.
SELECT
first_name,
SUBSTR(first_name, -1) AS "Rightmost character",
ASCII(SUBSTR(first_name, -1)) AS "ASCII"
FROM employees
FETCH FIRST 10 ROWS ONLY;
Risultato:
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
Stringhe vuote
Fornire una stringa vuota risulta in null
in fase di restituzione.
SET NULL 'null';
SELECT ASCII('')
FROM DUAL;
Risultato:
ASCII('') ____________ null
Per impostazione predefinita, SQLcl e SQL*Plus restituiscono uno spazio vuoto ogni volta che null
si verifica come risultato di un SQL SELECT
dichiarazione.
Tuttavia, puoi utilizzare SET NULL
per specificare una stringa diversa da restituire. Qui ho specificato che la stringa null
deve essere restituito.
Valori Nulli
Passaggio null
risulta null
:
SELECT ASCII(null)
FROM DUAL;
Risultato:
ASCII(NULL) ______________ null
Argomento mancante
La chiamata della funzione con senza passare un argomento genera un errore:
SELECT ASCII()
FROM DUAL;
Risultato:
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:
È lo stesso quando vengono passati troppi argomenti:
SELECT ASCII('a', 'b')
FROM DUAL;
Risultato:
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: