Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird: Gibt es einen Und-Operator? (https://www.delphipraxis.net/133068-firebird-gibt-es-einen-und-operator.html)

sveni2211 24. Apr 2009 21:59

Datenbank: Firebird • Version: 2.1.2 • Zugriff über: ZEOS

Firebird: Gibt es einen Und-Operator?
 
Hallo.

In einem Projekt bin ich gerade dabei eine Alternative zu einer bestehenden Sybase-Datenbank zu suchen. Nun wollte ich diesbezüglich auch Firebird ausprobieren. Bin dabei jetzt aber auf ein auf den ersten Blick triviales Problem gestoßen.

In der bestehenden Datenbank werden sehr viele Flag-Felder verwendet. Das heißt, es sind Interger-Felder, welche Bitweise Informationen tragen.
Auf die Informationen wird unter Sybase mit dem Operator "&" zugegriffen.
Beispiel: Es gibt das Feld FlagField vom Typ integer. Das Bit 1 hat die Bedeutung rot, das Bit 2 die Bedeutung Blau und Bit 3 die Bedeutung Grün.
Will ich jetzt wissen, ob in dem Feld ein bestimmter Wert vorhanden ist, wird einfach das Feld mit einem Bitmuster verglichen.
Also z.B.

select ... IsBlau = (TestField&2)>0, IsGruen = (TestField&4)>0 ... from Tabelle

Unter Firebird hatte ich sowas bisher nicht gebraucht. Habe die Interbase 6 Dokumentation schon durchgewühlt, aber habe dort keine Operantenübersicht gefunden. Probiert habe ich schon TestField&2; TestField and 2. Beides nimmt Firebird nicht an. Eine Suche bei Google nach Firebird Operanten brachte auch nichts.

Darum meine Frage, kennt Firebird so etwas überhaupt, und falls ja, wie wird in Firebird der Operant für "und" angegeben?

Danke schon einmal für Hilfe.

mjustin 25. Apr 2009 08:07

Re: Firebird: Gibt es einen Und-Operator?
 
Über UDFs kann FireBird weitere Funktionen erhalten.

Diese hier kenne ich zwar nicht näher, ist aber anscheinend in aktiver Entwicklung und enthält auch binäre Operationen:

http://freeadhocudf.org/
- "Silicon Valley" in der Eifel ;) -

Liste weiterer UDF Bibliotheken:
http://www.ibphoenix.com/main.nfs?a=...e=ibp_udf_libs

DeddyH 25. Apr 2009 08:12

Re: Firebird: Gibt es einen Und-Operator?
 
Vielleicht hilft Dir dieser Artikel weiter: http://chee-yang.blogspot.com/2009/0...on-in-sql.html

sveni2211 25. Apr 2009 10:33

Re: Firebird: Gibt es einen Und-Operator?
 
Danke für die Tipps. Der letzte Link sah zwar vielversprechend aus, aber unter Firebird funktioniert das irgendwie nicht. Eventuell behandelt der Firebird eine Division auf einen Integer / 2.0 anders.

Das mit der Udf sah vielversprechend aus. Habe mir das alles angeschaut und bin dabei auf eine List gestoßen, welche Funktionen in Firebird in den höheren Versionen fest integriert sind. Und da ist auch das UND dabei gewesen. Warum man bei Google nichts dazu findet...

Also. Es gibt diese binäre Operatoren unter Firebird ab Version 2.1:
Bin_And -> binäres UND
Bin_Or -> binäres ODER
Bin_XOr -> binäres auschließendes ODER.

Für den Fall das das nochmal jemand sucht. ;-)
In Versionen kleiner 2.1 sind die Funktionen über die AdHoc-Udf verfügbar.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz