Hallo,
Ich hab ein ziemlich komplexes Projekt an der Backe und mühe mich grade mit dem User-Management ab. Jeder User kann mehreren Gruppen zugewiesen werden und diese Zuweisung ist in der Datenbank auf eine mir unbekannte Art realisiert… irgendwie wird das über bitweises UND bestimmt und ehrlich gesagt hab ich das noch gar nicht kapiert. Aber da werd ich noch recherchieren.
Es trat jedenfalls ein Problem auf, als die Zahlen immer größer wurden dank sehr vieler Einträge in der Datenbank. Schließlich musste das Feld gruppe_id von INT nach BIGINT geändert werden, weil der maximalwert für INT überschritten worden war. Nur, seitdem gehn die Abfragen mit den bitweisen UND Vergleichen nicht mehr.
Ich habe zum Beispiel eine solche SQL Abfrage:
SELECT 2147483648 & 2 as recht
Und da kommt die Fehlermeldung:
Ungültiger Operator für Datentyp. Operator ist boolean AND, Typ ist numeric.
Mit Zahlen im Wertebereich von INT geht das, mit größeren eben nicht. Kann mir das jemand erklären? Kann ich den Datentyp irgendwie konvertieren, um ein richtiges Ergebnis zu erzielen? Hab bei Google recherchiert und es mit CAST X as … versucht, nur weiß ich gar nicht, welcher Datentyp denn nun wirklich benötigt wird. BINARY klappte jedenfalls nicht. Hat jemand Tipps, Erklärungen, Anregungen, Links für mich? Wär für alles dankbar.
Danke,
Chi