Dans MariaDB, ORD()
est une fonction de chaîne intégrée qui renvoie le code de caractère numérique du caractère le plus à gauche de son argument de chaîne.
Le ORD()
La fonction peut gérer des caractères multi-octets. Ceci est en contraste avec le ASCII()
fonction, qui ne gère que les caractères à un octet (8 bits).
Syntaxe
La syntaxe ressemble à ceci :
ORD(str)
Où str
est l'argument de la chaîne.
ORD()
renverra le code numérique du seul le plus à gauche caractère de cette chaîne.
Si le caractère le plus à gauche est un caractère multi-octets, ORD()
utilise la formule suivante pour calculer son résultat :
(1st byte code)
+ (2nd byte code x 256)
+ (3rd byte code x 256 x 256) ...
Exemple
Voici un exemple simple pour illustrer :
SELECT ORD('H');
Résultat :
+----------+| ORD('H') |+----------+| 72 |+----------+
Comme mentionné, ORD()
ne renvoie que le code du plus à gauche personnage. Par conséquent, ce qui suit produit le même résultat :
SELECT ORD('Homer');
Résultat :
+--------------+| ORD('Homère') |+--------------+| 72 |+--------------+
Pour illustrer cela davantage, récupérons le code de chaque lettre de la chaîne ci-dessus :
SELECT
ORD('H'),
ORD('o'),
ORD('m'),
ORD('e'),
ORD('r');
Résultat :
+----------+----------+----------+----------+-- --------+| ORD('H') | ORD('o') | ORD('m') | ORD('e') | ORD('r') |+----------+----------+----------+--------- -+----------+| 72 | 111 | 109 | 101 | 114 |+----------+----------+----------+----------+--- -------+
Caractères multi-octets
Voici un exemple qui utilise un caractère multi-octet :
SELECT ORD('©');
Résultat :
+-----------+| ORD('©') |+-----------+| 49833 |+-----------+
Sensibilité à la casse
Les lettres majuscules ont une valeur ASCII différente de leurs équivalents minuscules.
Exemple :
SELECT
ORD('H'),
ORD('h');
Résultat :
+----------+----------+| ORD('H') | ORD('h') |+----------+----------+| 72 | 104 |+----------+----------+
Un exemple de base de données
Voici un exemple d'utilisation de ORD()
dans une requête de base de données :
USE PetHouse;
SELECT
PetName,
ORD(PetName) AS 'ASCII value of leftmost character'
FROM Pets;
Résultat :
+---------+-----------------------------------+ | NomAnimal | Valeur ASCII du caractère le plus à gauche |+--------+--------------------------------- --+| Moelleux | 70 || Récupérer | 70 || gratter | 83 || remuer | 87 || Tweeter | 84 || Moelleux | 70 || Écorce | 66 || Miaou | 77 |+---------+-----------------------------------+Caractère le plus à droite
Ici, j'utilise le
RIGHT()
fonction pour renvoyer le caractère le plus à droite de chaque nom d'animal, puis l'utiliser à nouveau avec leORD()
fonction pour renvoyer la valeur ASCII pour ce caractère.USE PetHouse; SELECT PetName, RIGHT(PetName, 1) 'Rightmost character', ORD(RIGHT(PetName, 1)) 'ASCII code' FROM Pets;
Résultat :
+---------+---------------------+------------+| NomAnimal | Caractère le plus à droite | Code ASCII |+---------+---------------------+------------+| Moelleux | y | 121 || Récupérer | h | 104 || gratter | h | 104 || remuer | g | 103 || Tweeter | t | 116 || Moelleux | y | 121 || Écorce | k | 107 || Miaou | w | 119 |+---------+---------------------+------------+Chaînes vides
Fournir une chaîne vide donne
0
être retourné.SELECT ORD('');
Résultat :
+---------+| ORD('') |+---------+| 0 |+---------+Valeurs nulles
Fournir
null
donnenull
être retourné.SELECT ORD(null);
Résultat :
+-----------+| ORD(null) |+-----------+| NULL |+-----------+