Bitweise Operatoren im Jitterbit App Builder
Übersicht
Bitweise Operatoren (auch bekannt als Bitoperatoren) sind Zeichen, die Aktionen (bitweise Operationen) darstellen, die an einzelnen Bits ausgeführt werden. Je nach Datenbankanbieter können bitweise Operationen an int- und byte-Spalten ausgeführt werden und ermöglichen das Erstellen einer Spalte, die mehrere Informationszustände enthält.
Der häufigste Anwendungsfall für bitweise Operatoren ist die Verwendung numerischer Werte, bei denen die Bits der Zahl zum Speichern der Informationsbits verwendet werden:
1
:...0001
-2
:...0010
-4
:...0100
- ...
Bitweise Operatoren können mit allen verwandten Optionen verwendet werden, die nicht exklusiv sind (würden bei einer Dropdown-Liste nicht funktionieren) und werden häufig für Zugriff/Sicherheit (Lese-/Schreibzugriff) verwendet.
Unterstützte bitweise Operatoren
Operator | Typ | Beschreibung | Beispiel |
---|---|---|---|
& | Und | Gibt nur die Bits zurück, die beide Argumente gemeinsam haben | 1001 & 0011 = 0001 |
| | Oder | Gibt alle Bits zurück, die eines der Argumente hat | 1001 | 0011 = 1011 |
^ | Exklusiv-Oder | Gibt nur Bits zurück, die nur eines der Argumente hat | 1001 ^ 0011 = 1010 |
~ | Negieren | Invertiert alle Bits eines einzelnen Arguments | ~1001 = 0110 |
Beispielszenario
Bitweise Operatoren können in einem Szenario vom Typ Zeitplan verwendet werden, in dem Sie Bittypindikatoren anzeigen möchten, die Wochentage für verschiedene Zeitpläne darstellen. Hier würden wir Logik verwenden, um die zusammengesetzten Bitflags zu erhalten, die Wochentag und Wochenende darstellen.
In diesem Beispielszenario gehen wir davon aus, dass es eine Tagestabelle gibt, und ordnen jedes Bit einem Wochentag zu:
DayID | ID in Bits | Tag (Enum-Spalte) |
---|---|---|
1 | 0000001 | Sonntag |
2 | 0000010 | Montag |
4 | 0000100 | Dienstag |
8 | 0001000 | Mittwoch |
16 | 0010000 | Donnerstag |
32 | 0100000 | Freitag |
64 | 1000000 | Samstag |
Wir können auch kombinierte Datensätze haben:
DayID | ID in Bits | Tag (Enum-Spalte) |
---|---|---|
62 | 0111110 | Werktag |
65 | 1000001 | Wochenende |
Mit dieser Konfiguration könnten wir Folgendes für einen Zeitplan verwenden:
Zeitplan | DayID | DayID in Bits |
---|---|---|
Fährt montags | 2 | 0000010 |
Fährt freitags | 32 | 0100000 |
Fährt Di und Mi | 12 | 0001100 |
Hinweis
Beachten Sie, dass es in diesem Szenario kein FK geben würde, da nicht alle möglichen Kombinationen in der Tagestabelle beschrieben werden. In Wirklichkeit wird die Tagestabelle vielleicht nicht einmal benötigt, aber sie hilft in diesem Szenario.
Jetzt können wir die Bitoperatoren verwenden, um Folgendes hinzuzufügen, zu entfernen oder zu überprüfen:
- Fügt Freitag zum Zeitplan hinzu:
UPDATE Schedule Set DayID = DayID | Enum(Day, 'Friday') WHERE ....
- Schaltet Freitag aus dem Zeitplan aus:
UPDATE Schedule Set DayID = DayID ^ Enum(Day, 'Friday') WHERE ....
- Prüft, ob es freitags läuft:
IIF(DayID & Enum(Day, 'Friday') = Enum(Day, 'Friday'), 'Runs on Fridays', 'Don't run on Fridays')
- Prüft, ob es das ganze Wochenende läuft:
IIF(DayID & Enum(Day, 'Weekend') = Enum(Day, 'Weekend'), 'Runs on the whole Weekend', 'Don't run on Saturday and Sunday')
- Überprüft, ob es an mindestens einem Tag am Wochenende läuft:
IIF(DayID & Enum(Day, 'Weekend') > 0, 'Runs on a weekend day', 'Don't run on any weekend day')
Logikbeispiele
Je nach Szenario kann die erforderliche Zeitplanlogik einfach oder komplexer sein. Um mit unserem Zeitplanbeispiel fortzufahren: Wenn alle Tagesoptionen eine einzelne Flagge darstellen, kann Ihre Logik einfach sein. Beispiel: S.DayId ^ D.DayId
Wenn Sie zusammengesetzte Bitflags (Wochentag und Wochenende) verwenden, benötigen Sie möglicherweise eine komplexere Logik. Beispiel: IIF(S.DayId & D.DayId > 0, S.DayId ^ (S.DayId & D.DayId), S.DayId | D.DayId)