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