MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come funziona ORD() in MariaDB

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