V MariaDB, ORD()
je vestavěná řetězcová funkce, která vrací číselný kód znaku úplně vlevo v argumentu řetězce.
ORD()
funkce zvládne vícebajtové znaky. To je v kontrastu s ASCII()
funkce, která zpracovává pouze jednobajtové (8 bitové) znaky.
Syntaxe
Syntaxe vypadá takto:
ORD(str)
Kde str
je argument řetězce.
ORD()
vrátí číselný kód pouze zcela vlevo znak tohoto řetězce.
Pokud je znak zcela vlevo vícebajtový znak, ORD()
používá k výpočtu výsledku následující vzorec:
(1st byte code)
+ (2nd byte code x 256)
+ (3rd byte code x 256 x 256) ...
Příklad
Zde je jednoduchý příklad k demonstraci:
SELECT ORD('H');
Výsledek:
+-----------+| ORD('H') |+----------+| 72 |+----------+
Jak již bylo zmíněno, ORD()
vrátí pouze kód zcela vlevo charakter. Proto následující způsobí stejný výsledek:
SELECT ORD('Homer');
Výsledek:
+---------------+| ORD('Homer') |+--------------+| 72 |+--------------+
Abychom to dále demonstrovali, získáme kód z každého písmene ve výše uvedeném řetězci:
SELECT
ORD('H'),
ORD('o'),
ORD('m'),
ORD('e'),
ORD('r');
Výsledek:
+----------+----------+----------+----------+-- --------+| ORD('H') | ORD('o') | ORD('m') | ORD('e') | ORD('r') |+----------+----------+----------+---------- -+----------+| 72 | 111 | 109 | 101 | 114 |+----------+----------+----------+----------+--- -------+
Vícebajtové znaky
Zde je příklad, který používá vícebajtový znak:
SELECT ORD('©');
Výsledek:
+------------+| ORD('©') |+-----------+| 49833 |+-----------+
Rozlišovat malá a velká písmena
Velká písmena mají jinou hodnotu ASCII než jejich malé ekvivalenty.
Příklad:
SELECT
ORD('H'),
ORD('h');
Výsledek:
+----------+----------+| ORD('H') | ORD('h') |+----------+----------+| 72 | 104 |+----------+----------+
Příklad databáze
Zde je příklad použití ORD()
v databázovém dotazu:
USE PetHouse;
SELECT
PetName,
ORD(PetName) AS 'ASCII value of leftmost character'
FROM Pets;
Výsledek:
+---------+-----------------------------------+ | Jméno mazlíčka | Hodnota ASCII znaku zcela vlevo |+---------+--------------------------------- --+| Načechraný | 70 || Načíst | 70 || Škrábnout | 83 || Wag | 87 || Tweet | 84 || Načechraný | 70 || Kůra | 66 || Mňau | 77 |+---------+-----------------------------------+Znak zcela vpravo
Zde používám
RIGHT()
funkce vrátí znak úplně vpravo z každého jména mazlíčka a poté jej znovu použije sORD()
funkce vrátí hodnotu ASCII pro daný znak.USE PetHouse; SELECT PetName, RIGHT(PetName, 1) 'Rightmost character', ORD(RIGHT(PetName, 1)) 'ASCII code' FROM Pets;
Výsledek:
+---------+---------------------+------------+| Jméno mazlíčka | Znak zcela vpravo | ASCII kód |+---------+---------------------+------------+| Načechraný | y | 121 || Načíst | h | 104 || Škrábnout | h | 104 || Wag | g | 103 || Tweet | t | 116 || Načechraný | y | 121 || Kůra | k | 107 || Mňau | w | 119 |+---------+---------------------+------------+Prázdné řetězce
Poskytnutí prázdného řetězce má za následek
0
se vrací.SELECT ORD('');
Výsledek:
+----------+| ORD('') |+---------+| 0 |+---------+Nulové hodnoty
Poskytování
null
výsledkem jenull
se vrací.SELECT ORD(null);
Výsledek:
+------------+| ORD(null) |+-----------+| NULL |+-----------+