In MariaDB, ORD()
is een ingebouwde tekenreeksfunctie die de numerieke tekencode van het meest linkse teken van het tekenreeksargument retourneert.
De ORD()
functie kan multi-byte tekens aan. Dit in tegenstelling tot de ASCII()
functie, die alleen tekens van één byte (8 bit) verwerkt.
Syntaxis
De syntaxis gaat als volgt:
ORD(str)
Waar str
is het stringargument.
ORD()
retourneert de numerieke code van alleen de meest linkse teken van deze tekenreeks.
Als het meest linkse teken een teken van meerdere bytes is, ORD()
gebruikt de volgende formule om het resultaat te berekenen:
(1st byte code)
+ (2nd byte code x 256)
+ (3rd byte code x 256 x 256) ...
Voorbeeld
Hier is een eenvoudig voorbeeld om te demonstreren:
SELECT ORD('H');
Resultaat:
+----------+ | ORD('H') | +----------+ | 72 | +----------+
Zoals vermeld, ORD()
retourneert alleen de code van de meest linkse karakter. Daarom geeft het volgende hetzelfde resultaat:
SELECT ORD('Homer');
Resultaat:
+--------------+ | ORD('Homer') | +--------------+ | 72 | +--------------+
Laten we, om dit verder te demonstreren, de code van elke letter in de bovenstaande reeks halen:
SELECT
ORD('H'),
ORD('o'),
ORD('m'),
ORD('e'),
ORD('r');
Resultaat:
+----------+----------+----------+----------+----------+ | ORD('H') | ORD('o') | ORD('m') | ORD('e') | ORD('r') | +----------+----------+----------+----------+----------+ | 72 | 111 | 109 | 101 | 114 | +----------+----------+----------+----------+----------+
Multi-Byte-tekens
Hier is een voorbeeld dat een multibyte-teken gebruikt:
SELECT ORD('©');
Resultaat:
+-----------+ | ORD('©') | +-----------+ | 49833 | +-----------+
Hoofdlettergevoeligheid
Hoofdletters hebben een andere ASCII-waarde dan hun kleine letters.
Voorbeeld:
SELECT
ORD('H'),
ORD('h');
Resultaat:
+----------+----------+ | ORD('H') | ORD('h') | +----------+----------+ | 72 | 104 | +----------+----------+
Een databasevoorbeeld
Hier is een voorbeeld van het gebruik van ORD()
in een databasequery:
USE PetHouse;
SELECT
PetName,
ORD(PetName) AS 'ASCII value of leftmost character'
FROM Pets;
Resultaat:
+---------+-----------------------------------+ | PetName | ASCII value of leftmost character | +---------+-----------------------------------+ | Fluffy | 70 | | Fetch | 70 | | Scratch | 83 | | Wag | 87 | | Tweet | 84 | | Fluffy | 70 | | Bark | 66 | | Meow | 77 | +---------+-----------------------------------+
Rechterste karakter
Hier gebruik ik de RIGHT()
functie om het meest rechtse teken van elke koosnaam terug te geven, en gebruik het dan opnieuw met de ORD()
functie om de ASCII-waarde voor dat teken te retourneren.
USE PetHouse;
SELECT
PetName,
RIGHT(PetName, 1) 'Rightmost character',
ORD(RIGHT(PetName, 1)) 'ASCII code'
FROM Pets;
Resultaat:
+---------+---------------------+------------+ | PetName | Rightmost character | ASCII code | +---------+---------------------+------------+ | Fluffy | y | 121 | | Fetch | h | 104 | | Scratch | h | 104 | | Wag | g | 103 | | Tweet | t | 116 | | Fluffy | y | 121 | | Bark | k | 107 | | Meow | w | 119 | +---------+---------------------+------------+
Lege snaren
Het verstrekken van een lege string resulteert in 0
wordt geretourneerd.
SELECT ORD('');
Resultaat:
+---------+ | ORD('') | +---------+ | 0 | +---------+
Null-waarden
null
opgeven resulteert in null
wordt geretourneerd.
SELECT ORD(null);
Resultaat:
+-----------+ | ORD(null) | +-----------+ | NULL | +-----------+