Frage

Ich habe einige Probleme Werte vergleichen in VARCHAR Feldern gefunden.

Ich habe eine Tabelle mit Produkten und jedes Produkt hat Volumen. Ich speichere die Lautstärke in einem VARCHAR Feld und es ist in der Regel eine Zahl (30, 40, 200 ..), aber es gibt Produkte, die mehrere Volumes und deren Daten durch ein Semikolon getrennt gespeichert werden, wie so 30, 60,. 80

Ich weiß, dass mehrere Volumes wie die Speicherung wird nicht empfohlen, aber ich muss mit ihr arbeiten, wie es ist.

Ich versuche, eine Suche nach Volumenfunktion für die Produkte zu implementieren. Ich möchte auch die Produkte an, die ein größeres oder gleiches Volumen als die gesucht haben. Dies ist kein Problem mit den Produkten, die ein einzelnes Volumen haben, aber es ist ein Problem mit den mehreren Volumenprodukten.

Vielleicht wird ein Beispiel machen die Dinge klarer: Lassen Sie uns sagen, dass ich mit diesem ein Produkt in seiner Lautstärke Feld: 30; 40; 70; 80. Wenn jemand mit einem Volumen gesucht, lässt 50 sagen, ich möchte, dass das Produkt angezeigt werden.

das ich tun gedacht hatte meine eigene benutzerdefinierte MySQL-Funktion zu schreiben (ich habe noch nie zuvor), aber vielleicht kann jemand eine andere Lösung anbieten.

Ich entschuldige mich für mein schlechtes Englisch, aber ich hoffe, dass ich meine Frage klar.

Danke.

War es hilfreich?

Lösung

Sie müssen nur mit dem größten Wert vergleichen. Sind die Volumina in ansteigender Reihenfolge immer gespeichert, von links nach rechts? Wenn ja, dann mit dem Wert nach dem letzten Semikolon vergleichen, wenn man anwesend ist. Sie können verwenden SUBSTRING_INDEX auszuwählen der letzte Wert.

SELECT *
FROM products
WHERE CAST(SUBSTRING_INDEX(volume, ';', -1) AS UNSIGNED) >= 50
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top