Oracle
 sql >> Base de données >  >> RDS >> Oracle

Fonction ASCII() dans Oracle

Dans Oracle Database, le ASCII() renvoie la représentation décimale dans le jeu de caractères de la base de données du premier caractère de son argument.

Syntaxe

La syntaxe ressemble à ceci :

ASCII(char)

char est de type de données CHAR , VARCHAR2 , NCHAR , ou NVARCHAR2 .

ASCII() renvoie la valeur numérique ASCII du premier caractère de cette chaîne uniquement.

Exemple

Voici un exemple simple pour illustrer :

SELECT ASCII('Oracle')
FROM DUAL;

Résultat :

79

Cela nous indique que la lettre majuscule O a la valeur numérique ASCII de 79 .

Comme mentionné, ASCII() ne renvoie que la valeur ASCII du premier personnage. Par conséquent, ce qui suit produit le même résultat :

SELECT ASCII('O')
FROM DUAL;

Résultat :

79

Pour illustrer cela davantage, récupérons la valeur numérique ASCII de chaque lettre de la chaîne ci-dessus :

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;

Résultat :

    O      r     a     c      l      e 
_____ ______ _____ _____ ______ ______ 
   79    114    97    99    108    101 

Sensibilité à la casse

Les lettres majuscules ont une valeur ASCII différente de leurs équivalents minuscules.

Exemple :

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

Résultat :

    R      r 
_____ ______ 
   82    114

Un exemple de base de données

Voici un exemple d'utilisation de ASCII() dans une requête de base de données :

SELECT 
  first_name, 
  ASCII(first_name) AS "ASCII value of leftmost character"
FROM employees
FETCH FIRST 10 ROWS ONLY;

Résultat :

   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 

Caractère le plus à droite

Ici, j'utilise le SUBSTR() fonction pour renvoyer le caractère le plus à droite de chaque nom d'animal, puis l'utiliser à nouveau avec le ASCII() fonction pour renvoyer la valeur ASCII pour ce caractère.

SELECT 
  first_name, 
  SUBSTR(first_name, -1) AS "Rightmost character",
  ASCII(SUBSTR(first_name, -1)) AS "ASCII"
FROM employees
FETCH FIRST 10 ROWS ONLY;

Résultat :

   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

Chaînes vides

Fournir une chaîne vide donne null être retourné.

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

Résultat :

   ASCII('') 
____________ 
        null

Par défaut, SQLcl et SQL*Plus renvoient un espace vide chaque fois que null se produit à la suite d'un SQL SELECT déclaration.

Cependant, vous pouvez utiliser SET NULL pour spécifier une autre chaîne à renvoyer. Ici, j'ai précisé que la chaîne null doit être retourné.

Valeurs nulles

Passer null donne null :

SELECT ASCII(null)
FROM DUAL;

Résultat :

   ASCII(NULL) 
______________ 
          null

Argument manquant

L'appel de la fonction sans passer d'argument génère une erreur :

SELECT ASCII()
FROM DUAL;

Résultat :

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:

Il en est de même lorsque trop d'arguments sont passés :

SELECT ASCII('a', 'b')
FROM DUAL;

Résultat :

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: