2010-08-16 10 views
0

ce sont les variables que je passe à une méthode où je dois écrire une requête SQL commerequête SQL pour éviter paramètre valeur NULL

string cmd = @"select * 
from students_tbl 
where 
    [email protected] and branch_id=in(+" branchId "+) 
and passout_year>[email protected] 
and current_backlog>[email protected] 
and [email protected] 
and eGap<[email protected] 
and first_year_percent>[email protected] 
and second_year_percent>[email protected] 
and third_year_percent>[email protected]"; 

et ainsi de suite mais le problème est que peu de ces paramètres sont des moyens optionnels pour les variables il la valeur est nulle, donc je ne veux pas d'inclure les paramètres dans la requête alors comment dois-je éliminer les variables nulles je ne reçois pas comment devrais-je écrire requête pour résoudre ce problème

les paramètres sont aléatoires rien à réparer quand ils seront nuls car ils sont optionnels alors comment écrire une requête en utilisant uniquement un paramètre non nul

+0

ces paameter sont aléatoire rien fixer quand ils seront null – NoviceToDotNet

Répondre

1

Il suffit d'ajouter un contrôle is null avant votre comparaison, qui sera court-circuit si la valeur du paramètre d'entrée est null, par exemple:

where (@currentBacklog is null or current_backlog >= @currentBacklog) 
+0

si je mets IS NULL comme vous l'avez fait alors ce paramètre ne serait pas pris en compte? c'est ce que je veux s'il vous plaît laissez-moi savoir – NoviceToDotNet

+0

@Novice: c'est correct – RedFilter

+0

je crains que vous ne m'avez pas compris il peut sembler grossier mais à partir du code ci-dessus ce que je devine htat il chercherait ces valeurs dans les données base qui sont null pour le backlog actuel ou plus grand que le @currentBacklog Mais est-il vrai que par le code ci-dessus il ne prendrait pas current_backlog> = @ currentbakclog dans le compte je veux dire qu'il complètera l'ignorer et le filtrera alors je courrai le requête? – NoviceToDotNet

1

Vous pouvez tester une valeur nulle dans la condition et utiliser la valeur de la table à la place. Exemple:

... where course_id = isnull(@courseId, course_id) ... 
+0

chaque fois que j'ai besoin de vérifier paramètre non null comment puis-je faire cela? Je ne reçois pas s'il vous plaît mettez un code – NoviceToDotNet

+0

je n'utilise pas de procédure stockée je veux juste savoir pour simple requête paramétrée – NoviceToDotNet

+0

tu veux dire que chaque fois que je vais avoir trop vérifier la valeur du paramètre nul, puis je vais devoir les concaténer – NoviceToDotNet

0

Au lieu d'avoir

cmd = "one long string with many clauses, some of which are optional" 

essayer

cmd = "first clause, required" 
if second param is not null then 
    cmd = cmd & "second clause, optional" 
+0

pourriez-vous écrire du code s'il vous plait? – NoviceToDotNet

Questions connexes