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 | +-----------+