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)
Où 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: