Zum Inhalt springen

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.

bitwiseexample.png

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)