CAS Mysql - QUAND - ALORS - retour mauvais type de données (blob)
-
23-09-2019 - |
Question
Im créant des attributs produit personnalisable dans une boutique en ligne. - chaque attribut peut avoir différents types de données, chaque type de données est stocké dans une colonne distincte en utilisant le type de données correspondant mysql
J'ai une requête comme:
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 (...)
Maintenant, le problème est que lorsque attribute_types
.type
équivaut à? Certains type? Je veux retourner une valeur telle qu'elle est stockée dans la table de product_attribute_values
.
À l'heure actuelle, je reçois BLOb chaque fois.
Dois-je utiliser le type-casting ou il y a quelque chose de magique derrière la scène que je ne sais pas à propos, ou peut-être il y a quelque meilleure alternative?
EDIT:
Tout semble bien se passer (im prix de vérification qui est float) jusqu'à ce que j'ajouter une condition pour TEXT (textarea).
Pas de solution correcte
Autres conseils
Il semble que vous utilisez un certain navigateur de requête. Essayez d'exécuter cette commande par 'Putty'.
En outre, pour obtenir la sortie correcte, même dans le navigateur de requête, incluez fonction CAST dans votre déclaration de cas comme cela.
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