Zum Inhalt springen

binärwerte in MySQL vergleichen

Erstellt am 16. Oktober 2014 · 4 Antworten · letzte Antwort am 16. Oktober 2014

Tags: Datenbank, Frage

sobi555 ·

Hey Männer und Frauen,

mich beschäftigt folgendes Problem:
Ich habe 3 Checkboxen, welche ein Filter für die MySQL Abfrage darstellen. Wie überprüfe ich in MySQL ob der Datensatz die Anforderungen erfüllt?

Als Beispiel:
Checkbox 1 & 3 sind aktiv => 101 (binär) => 5 (dezimal)
Datensatz 1: 4 (dezimal) => 100 (binär) => ungültig
Datensatz 2: 7 (dezimal) => 111 (binär) => gültig

Ist das in MySQL überhaupt möglich oder muss ich das in PHP machen!?? 🙁

Liebe Grüße,

Simon

sobi555 · · Beste Antwort
SELECT 
  CONV( 21, 10, 2 ) AS att, 
  CONV( 17, 10, 2 ) AS cbx
  FROM gasthaus
  HAVING att >= cbx
LIMIT 0 , 30
toifel ·

Klingt irgendwie unnötig umständlich, muss es denn unbedingt binär sein?
Warum nicht Checkbox 1+3 aktiv -> "1,3" als String in der DB -> FIND_IN_SET Funktion.. nur mal als eine von vielen möglichen Alternativen 😉

sobi555 ·

achtung, halt dich fest... die echte Lösung (oben stimmt nicht) ist noch umständlicher! 😃 - aber... sie funktioniert! ^^

SELECT CONV(attribut, 10, 2 ) - CONV( 18, 10, 2 ) AS cbx
FROM gasthaus
HAVING cbx NOT LIKE '%9%'

gut, bei drei Checkboxen lass ich noch mit mir reden, was aber, wenn du 15 Checkboxen hast!?? - du hast Recht, ich hätte das ganze auch mit "string-gefummel" machen können. 😉 Aber kennst du das, wenn man sich was in den Kopf gesetzt hat und dann auch wissen will, ob es funktioniert!?? - Andere Möglichkeit wäre gewesen, pro Checkbox eine Spalte zu machen... 🙂