Aggregatfunktion für Bitfelder

17/04/2008 - 10:23 von Frank Niebelschütz | Report spam
Hallo,

Gibt es eine Aggregatfunktion, die Bitfelder verodern bzw. verunden
kann? Oder gibt es eine Möglichkeit, solch eine Funktion selbst zu
erstellen?

Beispiel:

CREATE TABLE rechte (Spalte int)

INSERT INTO rechte (Spalte) VALUES (1)
INSERT INTO rechte (Spalte) VALUES (5)
INSERT INTO rechte (Spalte) VALUES (3)
INSERT INTO rechte (Spalte) VALUES (8)
INSERT INTO rechte (Spalte) VALUES (2)


SELECT fnOder(Spalte) FROM rechte

Passieren soll nun die Operation (1 | 5 | 3 | 8 | 2) und als Ergebnis
des SELECTs soll 15 geliefert werden.


Für Hinweise wàre ich euch sehr dankbar.

mfg
Frank
 

Lesen sie die antworten

#1 Josef Poetzl
17/04/2008 - 10:41 | Warnen spam
Hallo!

Frank Niebelschütz schrieb:
Gibt es eine Aggregatfunktion, die Bitfelder verodern bzw. verunden
kann? Oder gibt es eine Möglichkeit, solch eine Funktion selbst zu
erstellen?

Beispiel:

CREATE TABLE rechte (Spalte int)

INSERT INTO rechte (Spalte) VALUES (1)
INSERT INTO rechte (Spalte) VALUES (5)
INSERT INTO rechte (Spalte) VALUES (3)
INSERT INTO rechte (Spalte) VALUES (8)
INSERT INTO rechte (Spalte) VALUES (2)

SELECT fnOder(Spalte) FROM rechte

Passieren soll nun die Operation (1 | 5 | 3 | 8 | 2) und als Ergebnis
des SELECTs soll 15 geliefert werden.



Mit einer Hilfstabelle könnte das funktionieren:

create table H (w int)
insert into H (w) values (1)
insert into H (w) values (2)
insert into H (w) values (4)
insert into H (w) values (8)

select sum( distinct (spalte & w) ) from rechte, H


mfg
Josef

Ähnliche fragen