I MariaDB, ORD()
är en inbyggd strängfunktion som returnerar den numeriska teckenkoden för tecknet längst till vänster i dess strängargument.
ORD()
funktion kan hantera tecken med flera byte. Detta är i motsats till ASCII()
funktion, som bara hanterar enkelbyte (8 bitars) tecken.
Syntax
Syntaxen ser ut så här:
ORD(str)
Där str
är strängargumentet.
ORD()
returnerar den numeriska koden för endast den längst till vänster tecken i denna sträng.
Om tecknet längst till vänster är ett tecken med flera byte, ORD()
använder följande formel för att beräkna resultatet:
(1st byte code)
+ (2nd byte code x 256)
+ (3rd byte code x 256 x 256) ...
Exempel
Här är ett enkelt exempel att visa:
SELECT ORD('H');
Resultat:
+----------+| ORD('H') |+----------+| 72 |+----------+
Som nämnts, ORD()
returnerar bara koden för den längst till vänster karaktär. Följande ger därför samma resultat:
SELECT ORD('Homer');
Resultat:
+--------------+| ORD('Homer') |+--------------+| 72 |+---------------------+
För att demonstrera detta ytterligare, låt oss hämta koden från varje bokstav i ovanstående sträng:
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-tecken
Här är ett exempel som använder ett flerbytetecken:
SELECT ORD('©');
Resultat:
+------------+| ORD('©') |+-----------+| 49833 |+-----------+
Skaftkänslighet
Versaler har ett annat ASCII-värde än sina gemener.
Exempel:
SELECT
ORD('H'),
ORD('h');
Resultat:
+----------+----------+| ORD('H') | ORD('h') |+----------+----------+| 72 | 104 |+----------+----------+
Ett databasexempel
Här är ett exempel på hur du använder ORD()
i en databasfråga:
USE PetHouse;
SELECT
PetName,
ORD(PetName) AS 'ASCII value of leftmost character'
FROM Pets;
Resultat:
+--------+------------------------------------------+ | PetName | ASCII-värde för tecknet längst till vänster |+---------+---------------------------------------- --+| Fluffig | 70 || Hämta | 70 || Skrapa | 83 || Wag | 87 || Tweet | 84 || Fluffig | 70 || Bark | 66 || Mjau | 77 |+---------+--------------------------------------------+
Tecken längst till höger
Här använder jag RIGHT()
funktion för att returnera tecknet längst till höger från varje husdjursnamn och använd det sedan igen med ORD()
funktion för att returnera ASCII-värdet för det tecknet.
USE PetHouse;
SELECT
PetName,
RIGHT(PetName, 1) 'Rightmost character',
ORD(RIGHT(PetName, 1)) 'ASCII code'
FROM Pets;
Resultat:
+--------+---------------------+-----------+| PetName | Tecken längst till höger | ASCII-kod |+---------+---------------------+------------+| Fluffig | y | 121 || Hämta | h | 104 || Skrapa | h | 104 || Wag | g | 103 || Tweet | t | 116 || Fluffig | y | 121 || Bark | k | 107 || Mjau | w | 119 |+--------+---------------------+-----------+Tömma strängar
Att tillhandahålla en tom sträng resulterar i
0
returneras.SELECT ORD('');
Resultat:
+--------+| ORD('') |+---------+| 0 |+---------+Nullvärden
Tillhandahåller
null
resulterar inull
returneras.SELECT ORD(null);
Resultat:
+------------+| ORD(null) |+-----------+| NULL |+-----------+