Mysql Bitweise Operationen und filter
Ich versuche zu implementieren bitweise filter mit MYSQL (mit udf-wenn nötig)
Der filter ist so etwas wie ein UND aber ich wollen, verwenden Sie die Maske zum erstellen einer neuen bit-string...
Lassen Sie mich erklären Sie mit einem Beispiel :
Angenommen ich habe eine Tabelle mit blob-Speicherung von 8-bit-streams:
- data1: 10110110
- data2: 01100010
- data3: 00010011
Dann habe ich eine Maske anwenden, um die bits von Daten, wenn die Maske Wert ist 1
- MASKE: 00101011
Und so erhalten Sie die folgenden erwarteten Ergebnisse:
- data1: 1010
- data2: 1010
- data3: 0011
Gibt es eine Möglichkeit zur Optimierung der Filterung, ohne Schleifen über jedes bit der "Maske" zu erhalten, wird der entsprechende Wert in "data" Zeile...
KLÄRUNG
Habe ich nur 8 bits für die post, aber es ist mehr wie 256 bytes
Joe : um Zu klären, exemple, die Maske 00101011 wird interpretiert als : Holen Sie sich die bit-Wert aus Datenfeld an position 3,5,7,8, wenn Sie Lesen, die Maske von Links nach rechts aufgezählt von bit 1 bis bit 8... Hoffe, diese Klarstellung ist "klar"...
- Ich bin nicht zu sehen, wie die Maske und die Zeilen sollen zurückkehren, die Daten
- Meiner Meinung nach ist es wirklich schwierig, dies umzusetzen, ohne eine Schleife.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie bitweise Operatoren in MySQL:
http://dev.mysql.com/doc/refman/5.0/en/bit-functions.html
Beispiel:
Quick-test:
Dies bedeutet eine bitweise
AND
mit dem binären Muster von der Maske, die Sie angegeben haben.Siehe den obigen link für mehr Spielzeug.
Nur so, ich weiss das zu tun, was Sie wollen, ist so etwas wie
Offensichtlich haben Sie zu konstruieren, der Ausdruck basiert auf Ihrer Maske; es ist nicht sehr schwer zu tun, nur ein bisschen langweilig — benötigen Sie grundsätzlich, um eine Schleife über die bits in der Maske, so etwas wie dieses:
JS:
Dem Beispiel-code oben ist in JavaScript, so dass Sie können führen Sie es als snippet hier ein und erhalten:
angemeldet auf der Konsole, aber es sollte ziemlich leicht Anschluss zu anderen Sprachen.