In MariaDB, ORD()
è una funzione stringa incorporata che restituisce il codice del carattere numerico del carattere più a sinistra del suo argomento stringa.
Il ORD()
la funzione può gestire caratteri multibyte. Questo è in contrasto con ASCII()
funzione, che gestisce solo caratteri a byte singolo (8 bit).
Sintassi
La sintassi è questa:
ORD(str)
Dove str
è l'argomento stringa.
ORD()
restituirà il codice numerico solo dell'più a sinistra carattere di questa stringa.
Se il carattere più a sinistra è un carattere multibyte, ORD()
utilizza la seguente formula per calcolarne il risultato:
(1st byte code)
+ (2nd byte code x 256)
+ (3rd byte code x 256 x 256) ...
Esempio
Ecco un semplice esempio da dimostrare:
SELECT ORD('H');
Risultato:
+----------+ | ORD('H') | +----------+ | 72 | +----------+
Come accennato, ORD()
restituisce solo il codice dell'più a sinistra carattere. Pertanto, quanto segue produce lo stesso risultato:
SELECT ORD('Homer');
Risultato:
+--------------+ | ORD('Homer') | +--------------+ | 72 | +--------------+
Per dimostrarlo ulteriormente, prendiamo il codice da ogni lettera nella stringa sopra:
SELECT
ORD('H'),
ORD('o'),
ORD('m'),
ORD('e'),
ORD('r');
Risultato:
+----------+----------+----------+----------+----------+ | ORD('H') | ORD('o') | ORD('m') | ORD('e') | ORD('r') | +----------+----------+----------+----------+----------+ | 72 | 111 | 109 | 101 | 114 | +----------+----------+----------+----------+----------+
Caratteri multibyte
Ecco un esempio che utilizza un carattere multibyte:
SELECT ORD('©');
Risultato:
+-----------+ | ORD('©') | +-----------+ | 49833 | +-----------+
Maiuscole/minuscole
Le lettere maiuscole hanno un valore ASCII diverso dai loro equivalenti minuscoli.
Esempio:
SELECT
ORD('H'),
ORD('h');
Risultato:
+----------+----------+ | ORD('H') | ORD('h') | +----------+----------+ | 72 | 104 | +----------+----------+
Un esempio di database
Ecco un esempio di utilizzo di ORD()
in una query di database:
USE PetHouse;
SELECT
PetName,
ORD(PetName) AS 'ASCII value of leftmost character'
FROM Pets;
Risultato:
+---------+-----------------------------------+ | PetName | ASCII value of leftmost character | +---------+-----------------------------------+ | Fluffy | 70 | | Fetch | 70 | | Scratch | 83 | | Wag | 87 | | Tweet | 84 | | Fluffy | 70 | | Bark | 66 | | Meow | 77 | +---------+-----------------------------------+
Personaggio più a destra
Qui, uso il RIGHT()
funzione per restituire il carattere più a destra di ogni pet name, quindi utilizzarlo di nuovo con ORD()
funzione per restituire il valore ASCII per quel carattere.
USE PetHouse;
SELECT
PetName,
RIGHT(PetName, 1) 'Rightmost character',
ORD(RIGHT(PetName, 1)) 'ASCII code'
FROM Pets;
Risultato:
+---------+---------------------+------------+ | 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 | +---------+---------------------+------------+
Stringhe vuote
Se si fornisce una stringa vuota, si ottiene 0
in fase di restituzione.
SELECT ORD('');
Risultato:
+---------+ | ORD('') | +---------+ | 0 | +---------+
Valori Nulli
Fornendo null
risulta null
in fase di restituzione.
SELECT ORD(null);
Risultato:
+-----------+ | ORD(null) | +-----------+ | NULL | +-----------+