Ce face ASCII() și ORD()
ASCII() returnează valoarea primului octet din text. Pentru literele simple (a-z, cifre) este codul ASCII obișnuit.
ORD() ține cont de caracterele pe mai mulți octeți: pentru Ș combină ambii octeți (0xC898 = 51352). Pentru text fără diacritice, cele două funcții dau același rezultat.
Parametri
| Parametru | Descriere |
|---|---|
sir |
Textul; contează doar primul caracter. |
Ce returnează
Un număr întreg (0 pentru șirul gol).
Exemple
Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.
CREATE TABLE clienti (
id INT PRIMARY KEY,
nume VARCHAR(50),
oras VARCHAR(30),
email VARCHAR(100),
telefon VARCHAR(20)
);
INSERT INTO clienti VALUES
(1, 'Ana Pop', 'Iași', 'ana.pop@exemplu.ro', '0722-123-456'),
(2, 'bogdan ionescu', 'Cluj-Napoca', 'bogdan@firma.ro', '0744 555 101'),
(3, 'Cristina Marin', 'Brașov', 'cristina@exemplu.ro', '0733.222.909'),
(4, 'Dan Stoica', 'Timișoara', NULL, '0755123123');
Exemplul 1: Litere simple și diacritice
SELECT ASCII('A') AS ascii_a, ORD('A') AS ord_a,
ASCII('Ș') AS ascii_s, ORD('Ș') AS ord_s;
Rezultat
+---------+-------+---------+-------+
| ascii_a | ord_a | ascii_s | ord_s |
+---------+-------+---------+-------+
| 65 | 65 | 200 | 51352 |
+---------+-------+---------+-------+
Exemplul 2: Gruparea clienților după inițială
SELECT UPPER(LEFT(nume, 1)) AS initiala, ASCII(UPPER(nume)) AS cod
FROM clienti
ORDER BY cod;
Rezultat
+----------+------+
| initiala | cod |
+----------+------+
| A | 65 |
| B | 66 |
| C | 67 |
| D | 68 |
+----------+------+
Greșeli frecvente
- Folosești
ASCII()pe texte cu diacritice și primești doar primul octet (200 pentruȘ). Pentru caractere multibyte foloseșteORD().
Comenzi înrudite
CHAR(): Construiește un text din codurile numerice ale caracterelor.HEX() și UNHEX(): HEX() transformă un număr sau un text în hexazecimal; UNHEX() face conversia inversă.LEFT(): Returnează primele N caractere dintr-un text.