Ce face BIT_AND(), BIT_OR(), BIT_XOR()
Aceste funcții de agregare aplică operatorii pe biți peste toate valorile din grup. Sunt utile când drepturile sau opțiunile sunt stocate ca biți: BIT_OR() dă toate drepturile pe care le are măcar un rol, BIT_AND() doar pe cele comune tuturor.
Parametri
| Parametru | Descriere |
|---|---|
expresie |
Valori întregi (sau șiruri binare). |
Ce returnează
Un număr întreg.
Exemple
Exemplul 1: Drepturi combinate din mai multe roluri
CREATE TABLE roluri (utilizator VARCHAR(10), drepturi INT);
-- 1 = citire, 2 = scriere, 4 = ștergere
INSERT INTO roluri VALUES ('ana', 1), ('ana', 3), ('dan', 5), ('dan', 7);
SELECT utilizator,
BIT_OR(drepturi) AS orice_rol,
BIT_AND(drepturi) AS toate_rolurile,
BIT_XOR(drepturi) AS sau_exclusiv
FROM roluri
GROUP BY utilizator
ORDER BY utilizator;
Rezultat
+------------+-----------+----------------+--------------+
| utilizator | orice_rol | toate_rolurile | sau_exclusiv |
+------------+-----------+----------------+--------------+
| ana | 3 | 1 | 2 |
| dan | 7 | 5 | 2 |
+------------+-----------+----------------+--------------+
Greșeli frecvente
- Folosești
SUM()în loc deBIT_OR()pentru a combina drepturi. Dacă doi utilizatori au același bit, suma îl numără de două ori și strică rezultatul.
Comenzi înrudite
Operatori pe biți: Lucrează cu biții numerelor: ȘI (&), SAU (|), SAU exclusiv (^), inversare (~), deplasări (<<, >>).BIN() și OCT(): Returnează reprezentarea unui număr în baza 2 (BIN) sau în baza 8 (OCT), ca text.GROUP BY: Grupează rândurile cu aceeași valoare, ca să calculezi totaluri pentru fiecare grup.