Mysql CASE - WANN - DANN - Rückkehr falschen Datentyp (Klecks)
-
23-09-2019 - |
Frage
Im Erstellen von kundengerechten Produkteigenschaften in einem Web-Speicher -. Jedes Attribut unterschiedlichen Typen von Daten haben kann, wobei jeder Datentyp in einer separaten Spalte entsprechenden mysql Datentyp gespeichert ist
Ich habe eine Abfrage wie:
SELECT
products.id AS id,
products.sku AS sku,
products.name AS name,
products.url_key AS url_key,
attributes.name AS attribute,
CASE
WHEN `attribute_types`.`type` = 'text'
THEN product_attribute_values.value_text
WHEN `attribute_types`.`type` = 'float'
THEN product_attribute_values.value_float
WHEN `attribute_types`.`type` = 'price'
THEN product_attribute_values.value_float
WHEN `attribute_types`.`type` = 'integer'
THEN product_attribute_values.value_integer
WHEN `attribute_types`.`type` = 'multiple'
THEN product_attribute_values.value_text
WHEN `attribute_types`.`type` = 'dropdown'
THEN product_attribute_values.value_text
WHEN `attribute_types`.`type` = 'date'
THEN product_attribute_values.value_date
WHEN `attribute_types`.`type` = 'textarea'
THEN product_attribute_values.value_textarea
END as value
from (...)
Nun, das Problem ist, dass, wenn attribute_types
.type
gleich zu? Some-Typ? ich will es einen Wert zurückgeben, wie es in product_attribute_values
Tabelle gespeichert ist.
Derzeit erhalte ich BLOb jedes Mal.
Sollte ich Typ-Casting oder es gibt einige hinter den Kulissen Magie, dass ich weiß, über tun sie nicht, oder vielleicht gibt es einige bessere Alternative?
EDIT:
Alles scheint OKAY (im Preis prüfen, der Schwimmer ist) zu sein, bis ich eine Bedingung für TEXT (Textfeld) hinzuzufügen.
Keine korrekte Lösung
Andere Tipps
Es scheint, dass Sie einige Abfrage-Browser verwenden. Versuchen Sie die Ausführung des Befehls durch ‚Kitt‘.
, auch die korrekte Ausgabe auch in der Abfrage-Browser zu erhalten, umfassen CAST-Funktion in Ihrer CASE-Anweisung wie folgt aus.
CAST(
CASE
WHEN `attribute_types`.`type` = 'text'
THEN product_attribute_values.value_text
WHEN `attribute_types`.`type` = 'float'
THEN product_attribute_values.value_float
WHEN `attribute_types`.`type` = 'price'
THEN product_attribute_values.value_float
WHEN `attribute_types`.`type` = 'integer'
THEN product_attribute_values.value_integer
WHEN `attribute_types`.`type` = 'multiple'
THEN product_attribute_values.value_text
WHEN `attribute_types`.`type` = 'dropdown'
THEN product_attribute_values.value_text
WHEN `attribute_types`.`type` = 'date'
THEN product_attribute_values.value_date
WHEN `attribute_types`.`type` = 'textarea'
THEN product_attribute_values.value_textarea
END
AS CHAR) as value