Passende Bitmasken mit bitstrings (statt ints) in der SQL

Fand ich eine großartige Ressource hier (
Vergleich von zwei Bitmasken in SQL, um zu sehen, ob die Teile zueinander passen
) zum durchführen von suchen in einer SQL-Datenbank, wo du bist Speicherung von Daten mit mehreren Eigenschaften unter Verwendung von bit-Masken. In dem Beispiel zwar alle Daten gespeichert als int-Werte und die where-Klausel scheint zu funktionieren nur mit ints.

Gibt es eine einfache Möglichkeit zu konvertieren, die einen sehr ähnlichen Testfall für die Verwendung der vollständigen bitstrings statt? Anstatt also ein Beispiel wie:

with test (id, username, roles)
AS
(
    SELECT 1,'Dave',1
    UNION SELECT 2,'Charlie',3
    UNION SELECT 3,'Susan',5
    UNION SELECT 4,'Nick',2
)
select * from test where (roles & 7) != 0 

stattdessen mit etwas wie:

with test (id, username, roles)
AS
(
    SELECT 1,'Dave',B'001'
    UNION SELECT 2,'Charlie',B'011'
    UNION SELECT 3,'Susan',B'101'
    UNION SELECT 4,'Nick',B'110'
)
select * from test where (roles & B'001') != 0 

Kann ich hin und her konvertieren, aber es ist einfacher zu visualisieren, die mit der tatsächlichen bitstrings. Für meine einfachen Umbau (oben), bekomme ich eine Fehlermeldung, dass der Betreiber nicht für bitstrings. Gibt es eine andere Möglichkeit dies einzurichten, die funktionieren würde?

  • SQL ist ein Oberbegriff für structured query language. Was DBMS verwenden Sie? String & Bitweise Operatoren variieren je nach DBMS.
  • Ich bin mit Postgres
InformationsquelleAutor ten | 2013-01-07
Schreibe einen Kommentar