À l'aide de Cas dans SQL avec le paramètre/variable pour vérifier les valeurs Null
Je suis en train d'écrire une instruction SQL Select pour retourner les enregistrements en fonction d'une entrée de l'utilisateur par le biais d'un front-end.
Je veux écrire l'instruction Select comme ceci:
SELECT somefields
FROM sometable
WHERE CASE variable
WHEN 'blank' THEN field IS NULL
ELSE field = field
END
Fondamentalement, je voulez filtrer une colonne pour trouver les valeurs NULL ou d'ignorer le filtre et remettre toutes les valeurs en fonction de la valeur de la variable. Je sais que les résultats de l'instruction n'est pas exécutable, mais comment puis-je faire cela?
Quelle version de SQL (mySQL, SQL-Server, Oracle?)
OriginalL'auteur jpuck1054700 | 2011-11-18
Vous devez vous connecter pour publier un commentaire.
Quand
variable
est "vide", la requête suivante va vous donner des lignes oùfield
est NULL. Lorsquevariable
est autre chose, il va vous donner toutes les lignes:OriginalL'auteur Branko Dimitrijevic
Vous pouvez utiliser
NULLIF()
(le lien est pour SQL Server, maisNULLIF()
devrait être la norme):field = variable
si variable != 'vide'. OP demandéfield = field
lorsque la variable est 'vide'OriginalL'auteur bhamby
L'extrait de code suivant doit se comporter comme suit:
@variable is null
, toutes les lignes de retour@variable = 'blank'
, renvoyer toutes les lignes oùfield is null
oufield = 'blank'
@variable
est égal àfield
Extrait de Code:
Une remarque: si l'on analyse le contenu d'un paramètre de type varchar vous devez vous assurer que votre cas, la décision est vrai que je l'ai.e: case à cocher pour " (chaîne vide) d'abord, puis de vérifier la valeur null alors pour l'égalité, par exemple, CHAMP1 = @someParam1
Merci! vous avez sauvé ma journée .. erm nuit 🙂 C'est une très belle solution!
OriginalL'auteur Andomar
OÙ les Critères s'appliquent lorsque les variables ont une valeur
Par Exemple:
Lorsque la Ville est null alors les tables de toutes les lignes de retour
OriginalL'auteur Ali
Je crois comprendre ce que vous êtes après. Quelque chose comme ceci peut-être?
OriginalL'auteur Zannjaminderson
Crois que je comprends ce que tu veux dire....par exemple....
Premier bit de la condition, où est l'utilisation de la variable, lorsqu'ils sont présents (isnull peu, c'est ignorer la variable si elle est null)
La deuxième partie de la condition, où est dans le cas où votre évaluative champ est null aussi efficacement que les champs ne sont pas = null ils sont 'a la valeur null'.
Confus? Bon. Fonctionne sur ce que je fais!
OriginalL'auteur James Prout
Voici ma solution basée sur @Andomar réponse ci-dessus, visant à tester toute personne une entrée valeur varchar, vous avez besoin de tester le paramètre dans le bon ordre, comme dans l'exemple ci-dessous:
Espère que cela aide quelqu'un.
OriginalL'auteur Tahir Khalid