W MariaDB, ORD()
jest wbudowaną funkcją łańcuchową, która zwraca numeryczny kod znaku skrajnego lewego znaku argumentu łańcuchowego.
ORD()
funkcja może obsługiwać znaki wielobajtowe. Jest to w przeciwieństwie do ASCII()
funkcja, która obsługuje tylko znaki jednobajtowe (8-bitowe).
Składnia
Składnia wygląda tak:
ORD(str)
Gdzie str
jest argumentem łańcuchowym.
ORD()
zwróci kod numeryczny tylko lewej znak tego ciągu.
Jeśli skrajny lewy znak jest znakiem wielobajtowym, ORD()
używa następującego wzoru do obliczenia wyniku:
(1st byte code)
+ (2nd byte code x 256)
+ (3rd byte code x 256 x 256) ...
Przykład
Oto prosty przykład do zademonstrowania:
SELECT ORD('H');
Wynik:
+----------+ | ORD('H') | +----------+ | 72 | +----------+
Jak wspomniano, ORD()
zwraca tylko kod lewej postać. Dlatego poniższe daje ten sam wynik:
SELECT ORD('Homer');
Wynik:
+--------------+ | ORD('Homer') | +--------------+ | 72 | +--------------+
Aby to dokładniej zademonstrować, pobierzmy kod z każdej litery w powyższym ciągu:
SELECT
ORD('H'),
ORD('o'),
ORD('m'),
ORD('e'),
ORD('r');
Wynik:
+----------+----------+----------+----------+----------+ | ORD('H') | ORD('o') | ORD('m') | ORD('e') | ORD('r') | +----------+----------+----------+----------+----------+ | 72 | 111 | 109 | 101 | 114 | +----------+----------+----------+----------+----------+
Znaki wielobajtowe
Oto przykład, który używa znaku wielobajtowego:
SELECT ORD('©');
Wynik:
+-----------+ | ORD('©') | +-----------+ | 49833 | +-----------+
Wrażliwość na wielkość liter
Wielkie litery mają inną wartość ASCII niż ich małe odpowiedniki.
Przykład:
SELECT
ORD('H'),
ORD('h');
Wynik:
+----------+----------+ | ORD('H') | ORD('h') | +----------+----------+ | 72 | 104 | +----------+----------+
Przykład bazy danych
Oto przykład użycia ORD()
w zapytaniu do bazy danych:
USE PetHouse;
SELECT
PetName,
ORD(PetName) AS 'ASCII value of leftmost character'
FROM Pets;
Wynik:
+---------+-----------------------------------+ | PetName | ASCII value of leftmost character | +---------+-----------------------------------+ | Fluffy | 70 | | Fetch | 70 | | Scratch | 83 | | Wag | 87 | | Tweet | 84 | | Fluffy | 70 | | Bark | 66 | | Meow | 77 | +---------+-----------------------------------+
Postać z prawej strony
Tutaj używam RIGHT()
funkcja, aby zwrócić znak z prawej strony każdego imienia zwierzaka, a następnie użyć go ponownie z ORD()
funkcja zwracająca wartość ASCII dla tego znaku.
USE PetHouse;
SELECT
PetName,
RIGHT(PetName, 1) 'Rightmost character',
ORD(RIGHT(PetName, 1)) 'ASCII code'
FROM Pets;
Wynik:
+---------+---------------------+------------+ | 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 | +---------+---------------------+------------+
Puste ciągi
Dostarczenie pustego ciągu daje w wyniku 0
zostanie zwrócony.
SELECT ORD('');
Wynik:
+---------+ | ORD('') | +---------+ | 0 | +---------+
Wartości puste
Podanie null
wyniki w null
zostanie zwrócony.
SELECT ORD(null);
Wynik:
+-----------+ | ORD(null) | +-----------+ | NULL | +-----------+