Order By dans un Hstore avec rows n'ayant pas les memes champs hstore

lundi 4 août 2014

Bonjour à vous,


j'ai un problème lorsque je tente d'effectuer une requête select avec ORDER BY sur un champs de type hstore.

Certaines lignes ne possèdent pas tous les attributs du HSTORE, du coup lorsque je fais mon ORDER BY, si le champs n'existe pas dans le hstore, une erreur sort.


Voici la requête : (le champ hstore est "list_attributes)




ma_base => SELECT id, list_attributes FROM client_data WHERE deleted<>1 AND client_data_type_id=2 ORDER BY (list_attributes->'8')::int DESC;
ERROR: invalid input syntax for integer: ""




ma_base => SELECT id, list_attributes FROM client_data WHERE deleted<>1 AND client_data_type_id=2;
-[ RECORD 1 ]---+-------------------------------------------------------------------------------------------------------------------------
id | 89
list_attributes | "3"=>"MON BLOC SANS TAILLE 2", "8"=>"", "14"=>"", "16"=>NULL, "19"=>""
-[ RECORD 5 ]---+-------------------------------------------------------------------------------------------------------------------------
id | 64
list_attributes | "3"=>"Quatrième bloc", "15"=>"1"
-[ RECORD 6 ]---+-------------------------------------------------------------------------------------------------------------------------
id | 63
list_attributes | "3"=>"MON 3EME BLOC", "8"=>"54", "14"=>"", "15"=>"1", "16"=>NULL, "19"=>"ceci est mon 3eme bloc"


On voit notamment que la ligne 64 ne possède pas l'attribut "8". Si toutes les lignes avaient cet attribut, même pour valeur nulle, le tri fonctionnerait sans problème.

Y a t-il un moyen d'effectuer une condition afin de ne faire le order by seulement si le champ existe ou quelque chose du genre?


Merci beaucoup par avance!





0 commentaires:

Enregistrer un commentaire

 

Lorem

Ipsum

Dolor