1 votes

Vérification de la date du serveur SQL en fonction des données saisies

Ce problème m'a posé tellement de problèmes que j'ai décidé d'essayer de trouver la bonne solution, au lieu de la méthode longue, sale et horrible à laquelle j'ai toujours recours (copier la déclaration sql).

La table possède une colonne date dont la valeur par défaut est NULL.

Maintenant, je dois passer une valeur (-1,0,1) à une instruction SQL qui détermine ce qu'il faut retirer.

-1 - should bring back all rows
0  - should bring back rows with a NULL date value
1  - should bring back rows with a valid date value

J'ai essayé d'utiliser des instructions CASE, mais l'opérateur logique devrait changer en fonction de la valeur transmise à la requête.

Appelons simplement la table Quotes et la colonne completed, ainsi...

CREATE TABLE 'Quotes'
(
    completed DATETIME default(NULL)
)

La solution doit être pour SQL Server 2000, et je travaille avec des procédures stockées et non du SQL dynamique. Il faut donc que tout se fasse en une seule déclaration.


Remerciements Dan

7voto

Joel Goodwin Points 3477

Quelque chose comme ceci dans la clause WHERE

WHERE (@param = -1)
OR (@param = 0 AND completed IS NULL)
OR (@param = 1 AND completed IS NOT NULL)

0voto

Raj Points 4190

Essayez ceci :

declare @param int
set @param=-1
declare @sql varchar(2000)
set @sql='select * from quotes '+ 
case @param when 0 then 'where completed is null'
            when 1 then 'where completed is not null'
            when -1 then ''
end
exec(@sql)

Raj

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X