I MariaDB, ORD()
er en indbygget strengfunktion, der returnerer den numeriske tegnkode for tegnet længst til venstre i dets strengargument.
ORD()
funktion kan håndtere multi-byte tegn. Dette er i modsætning til ASCII()
funktion, som kun håndterer enkelt-byte (8 bit) tegn.
Syntaks
Syntaksen ser sådan ud:
ORD(str)
Hvor str
er strengargumentet.
ORD()
returnerer kun den numeriske kode for længst til venstre karakter af denne streng.
Hvis tegnet længst til venstre er et multi-byte tegn, ORD()
bruger følgende formel til at beregne resultatet:
(1st byte code)
+ (2nd byte code x 256)
+ (3rd byte code x 256 x 256) ...
Eksempel
Her er et simpelt eksempel til at demonstrere:
SELECT ORD('H');
Resultat:
+----------+| ORD('H') |+----------+| 72 |+----------+
Som nævnt, ORD()
returnerer kun koden for længst til venstre Karakter. Følgende giver derfor det samme resultat:
SELECT ORD('Homer');
Resultat:
+--------------+| ORD('Homer') |+--------------+| 72 |+--------------+
For at demonstrere dette yderligere, lad os få koden fra hvert bogstav i ovenstående streng:
SELECT
ORD('H'),
ORD('o'),
ORD('m'),
ORD('e'),
ORD('r');
Resultat:
+-----------+---------------------- --------+| ORD('H') | ORD('o') | ORD('m') | ORD('e') | ORD('r') |+------+----------------- --+--------+| 72 | 111 | 109 | 101 | 114 |+----------------------------- -------+
Multi-Byte-tegn
Her er et eksempel, der bruger et multi-byte tegn:
SELECT ORD('©');
Resultat:
+------------+| ORD('©') |+-----------+| 49833 |+------------+
Skrivar og bogstaver
Store bogstaver har en anden ASCII-værdi end deres små bogstaver.
Eksempel:
SELECT
ORD('H'),
ORD('h');
Resultat:
+----------+--------+| ORD('H') | ORD('h') |+----------+----------+| 72 | 104 |+----------+----------+
Et databaseeksempel
Her er et eksempel på brug af ORD()
i en databaseforespørgsel:
USE PetHouse;
SELECT
PetName,
ORD(PetName) AS 'ASCII value of leftmost character'
FROM Pets;
Resultat:
+--------+-------------------------------------------+ | Kæledyrsnavn | ASCII-værdi for tegn længst til venstre |+---------+---------------------------------------- --+| Fluffy | 70 || Hent | 70 || Ridse | 83 || Wag | 87 || Tweet | 84 || Fluffy | 70 || Bark | 66 || Mjav | 77 |+---------+--------------------------------------------+
Lyst til højre
Her bruger jeg RIGHT()
funktion til at returnere tegnet længst til højre fra hvert kæledyrsnavn og derefter bruge det igen med ORD()
funktion for at returnere ASCII-værdien for det pågældende tegn.
USE PetHouse;
SELECT
PetName,
RIGHT(PetName, 1) 'Rightmost character',
ORD(RIGHT(PetName, 1)) 'ASCII code'
FROM Pets;
Resultat:
+--------+---------------------+-----------+| Kæledyrsnavn | Tegn længst til højre | ASCII-kode |+--------+----------------------+-----------+| Fluffy | y | 121 || Hent | h | 104 || Ridse | h | 104 || Wag | g | 103 || Tweet | t | 116 || Fluffy | y | 121 || Bark | k | 107 || Mjav | w | 119 |+--------+----------------------+-----------+Tomme strenge
Angivelse af en tom streng resulterer i
0
bliver returneret.SELECT ORD('');
Resultat:
+--------+| ORD('') |+--------+| 0 |+---------+Nul-værdier
Giver
null
resulterer inull
bliver returneret.SELECT ORD(null);
Resultat:
+------------+| ORD(null) |+------------+| NULL |+------------+