Bitwise enum dem SQL-Spaltenwert zuordnen

8

Ich habe eine bitweise Enumeration mit FlagsAttribute gesetzt -

%Vor%

Nun, in C # speichere ich diesen Wert in einer Eigenschaft, sage MyProperty und beim Speichern schreibe ich diese Eigenschaft in meine SQL-Datenbank in Integer-Spalte. Angenommen, ich wähle First,Second,Five aus dem Code, dann wird es in der Datenbank als '11' gespeichert.

Ich weiß, dass ich den Wert aus der Datenbank holen kann und nur den int-Wert in MyEnum eingeben muss und es gibt mir die Werte. Aber, ich möchte, dass einige Manipulationen an SQL-Daten in einer Stored-Prozedur vorgenommen werden, wo ich sie natürlich nicht auf den Enum-Wert tippen kann. Also, gibt es einen Ausweg, der mich über die einzelnen Werte informieren kann.

Wie im Beispiel wenn 11 gespeichert ist, kann ich es als "1+2+8"

bekommen     
Rohit Vats 12.09.2011, 21:17
quelle

4 Antworten

9

Dies kann Ihnen helfen, um loszulegen:

%Vor%

Dabei ist 11 Ihr gespeicherter Wert.

Dies liefert für jeden gesetzten Wert Werte ungleich Null (d. h. Select 11 & 1 As 'First' gibt 1 zurück, Select 11 & 2 As 'Second' gibt 2 zurück, Select 11 & 4 As 'Third' gibt 0 zurück und so weiter.

    
RoccoC5 12.09.2011, 21:30
quelle
6

Sie können bitweise Operationen in SQL

ausführen %Vor%

Gib zurück, welche Flags gesetzt sind

%Vor%     
TheCodeKing 12.09.2011 21:22
quelle
0
%Vor%

Das (mögliche) abschließende Plus wird dem Leser als Übung überlassen.

    
HABO 12.09.2011 23:48
quelle
0
%Vor%

Der Wert von 26 (oder 11010) entspricht One + Three + Four Um eine Beschreibung dafür zu erhalten, können Sie die nächste Anfrage

verwenden %Vor%

Es gibt Ihnen das nächste Ergebnis One | Three | Four

Wenn Sie nur IDs erhalten möchten

%Vor%     
Artiom 09.08.2017 09:40
quelle

Tags und Links