J'ai un scénario dans lequel je dois vérifier la date et une valeur pour déterminer le résultat.Utilisation de la condition ET dans le décodage
Ex-
case when my_date > '10-01-2011' and my_value = 0 then
'Do this'
else
'Do that'
end
Je suis en train de l'utiliser dans Oracle requête SQL, je me demandais s'il y a une meilleure approche de cette logique plutôt que d'utiliser la déclaration de cas; peut-être en utilisant le décodage ou toute autre fonction d'Oracle.
Ceci est parfaitement bien, decode va compliquer et ne peut pas être utilisé avec * supérieur * –
'cas où then' expression de cas est une partie de ANSII SQL standard et est pris en charge par presque tous les SGBD. 'Decode' fonctionne sur Oracle, mais vous ne pouvez pas trouver cette fonction sur les principaux systèmes SGBD restants - PostgreSQL, SQL-Server, MySql, SQLite etc. Je vous recommande d'utiliser des expressions de cas au lieu de DECODE. – krokodilko
En plus des commentaires précédents (coller avec CASE, pas DECODE), quel est le type de données de la colonne my_date? Si c'est du type de données DATE, alors ne le comparez pas à une chaîne - convertissez explicitement la chaîne en une date en utilisant 'to_date()' avec le masque de format approprié (par exemple 'to_date ('10 -01-2011 ', 'dd-mm-yyyy') ') ou (s'il n'y a pas d'élément time dans la valeur de votre date) en utilisant le littéral' DATE' (par exemple 'DATE '2011-01-10''). – Boneist