Oracle
 sql >> Database >  >> RDS >> Oracle

Funzione ASCII() in Oracle

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: