Ce face FIELD()
FIELD() caută primul argument printre celelalte și returnează poziția lui (de la 1). Dacă nu îl găsește, returnează 0.
Cea mai cunoscută utilizare este ORDER BY FIELD(...): sortezi rândurile într-o ordine aleasă de tine, nu alfabetic.
Parametri
| Parametru | Descriere |
|---|---|
cauta |
Valoarea căutată. |
val1, val2, ... |
Lista în care se caută. |
Ce returnează
Poziția în listă sau 0.
Exemple
Exemplul 1: Poziția într-o listă
SELECT FIELD('Cluj', 'Iași', 'Cluj', 'Brașov') AS pozitie,
FIELD('Arad', 'Iași', 'Cluj') AS lipsa;
Rezultat
+---------+-------+
| pozitie | lipsa |
+---------+-------+
| 2 | 0 |
+---------+-------+
Exemplul 2: Sortare într-o ordine stabilită de tine
CREATE TABLE comenzi (id INT, status VARCHAR(20));
INSERT INTO comenzi VALUES (1, 'livrata'), (2, 'noua'), (3, 'in_curs'), (4, 'noua');
SELECT id, status
FROM comenzi
ORDER BY FIELD(status, 'noua', 'in_curs', 'livrata'), id;
Rezultat
+------+---------+
| id | status |
+------+---------+
| 2 | noua |
| 4 | noua |
| 3 | in_curs |
| 1 | livrata |
+------+---------+
Greșeli frecvente
- Valorile care nu sunt în listă primesc 0 și ajung primele la
ORDER BY FIELD(...). Pune-le la final cuORDER BY FIELD(...) = 0, FIELD(...).
Comenzi înrudite
ELT(): Returnează al N-lea argument dintr-o listă; inversul funcției FIELD().FIND_IN_SET(): Caută o valoare într-un text cu elemente separate prin virgulă și returnează poziția.ORDER BY: Ordonează rezultatele crescător (ASC) sau descrescător (DESC) după una sau mai multe coloane.