Entwickler-Ecke

Datenbanken - SQL: Bits löschen/setzen mit Masken?


JVS - Do 20.08.09 10:23
Titel: SQL: Bits löschen/setzen mit Masken?
Hallo alle zusammen,

um in einem Integer einzelne Bits zu setzen/löschen, nutze ich
normalerweise folgendes:

Wert := Wert OR Maske (zum Setzen)
Wert := Wert AND NOT Maske (zum Löschen)

Kann ich das in einem SQL-Statement unterbringen,
um in einem Rutsch eine komplette Tabelle zu aktualisieren?
Bisher muß ich jeden Datsatz einzeln per Tippeltappel (WHILE NOT tab.eof ...) anfassen.

AND, OR und NOT haben ja in SQL eine andere Wirkung.
Gibt es so was wie Bitmaskenbefehle im Standard-SQL?


mkinzler - Do 20.08.09 10:29

Ja

SQL-Anweisung
1:
update <Tabelle> set <Feld> = :wert where <Bedingung>;                    


JVS - Do 20.08.09 10:42

Hi mkizler,

also ich möchte, dass etwas in der Art


SQL-Anweisung
1:
  Update <Tabelle> Set <Feld> = <Feld> OR Bitmaske                    


funktioniert wie innerhalb von Delphi:
das OR nicht als "SQL-OR" sondern als Bitoperation.
Das seh ich bei deinem Vorschlag jetzt noch nicht, oder?


Narses - Do 20.08.09 10:44

Moin!

user profile iconJVS hat folgendes geschrieben Zum zitierten Posting springen:
AND, OR und NOT haben ja in SQL eine andere Wirkung.
Gibt es so was wie Bitmaskenbefehle im Standard-SQL?
Also zumindest MySQL kennt natürlich auch Binäroperatoren. Ob dir das was nutzt, hängt davon ab, welches DBMS du nutzt. :nixweiss: Würde mich aber wundern, wenn ein aktuelles DBMS sowas nicht könnte... :?

cu
Narses


Nersgatt - Do 20.08.09 10:52

Firebird kennt ab 2.1 z.B. BIN_OR


JVS - Do 20.08.09 10:52

Habe über ADO / Jet 4.0 OLEDB eine Accessdatenbank am Wickel.
Gibt es da was in der Richtung?


Narses - Do 20.08.09 11:53

Moin!

AFAIK werden die SQL-Statemants direkt an Access weitergereicht, da passiert im ODBC-Treiber weiter nix. Deshalb: schonmal in der Access-Hilfe geschaut, ob/wie man das macht, dann das entsprechende SQL-Statement generieren lassen. :idea:

cu
Narses