SQL: Utiliser plusieurs valeurs dans une seule instruction SELECT

Je suis en utilisant une instruction SELECT en T-SQL sur une table similaire à ceci:

SELECT DISTINCT name, location_id, application_id FROM apps
WHERE ((application_id is null) or (application_id = '4'))
AND ((location_id is null) or (location_id = '3'))

Cela semble bien fonctionner lors de la recherche pour l'un application_id ou un location_id, mais que si je veux exécuter l'instruction pour plusieurs emplacements? Je veux retourner tous les résultats pour un montant inconnu de location_id et application_id. Par exemple, si je voulais à la recherche de quelqu'un à l'location_id 2, 3, 4, 5, mais avec un seul application_id. Comment puis-je faire?

Vous en remercie d'avance!


EDIT: je suis un idiot! J'ai fait sonner facilement sans vous donner tous les détails. Toutes ces valeurs sont données à l'intérieur d'un tableau. L'utilisateur devra choisir l'id à partir d'une colonne dans la table au lieu de les insérer. Après avoir fait un peu de recherche sur ce problème, je venu avec une page qui semble tout une solution viable.

CREATE FUNCTION iter$simple_intlist_to_tbl (@list nvarchar(MAX))
   RETURNS @tbl TABLE (number int NOT NULL) AS
BEGIN
   DECLARE @pos        int,
           @nextpos    int,
           @valuelen   int

   SELECT @pos = 0, @nextpos = 1

   WHILE @nextpos > 0
   BEGIN
      SELECT @nextpos = charindex(',', @list, @pos + 1)
      SELECT @valuelen = CASE WHEN @nextpos > 0
                              THEN @nextpos
                              ELSE len(@list) + 1
                         END - @pos - 1
      INSERT @tbl (number)
         VALUES (convert(int, substring(@list, @pos + 1, @valuelen)))
      SELECT @pos = @nextpos
   END
  RETURN
END

Quelqu'un peut-il m'aider à parfaire ce pour répondre à mes besoins? Désolé si ma question n'est pas très clair, que je suis mal à se familiariser avec moi-même.


EDIT 2: Après avoir fait un peu plus de lecture sur le sujet, il semble que j'ai besoin d'une procédure stockée pour ce faire. Le code du top semble être ce dont j'ai besoin, mais j'ai du mal à l'adapter à mes besoins. La structure de la table est comme suit:

application_id   name                  location_id
------------------------------------------------------
1                Joe Blogs             34
2                John Smith            55

Selon l'article, j'ai juste lié à:

"La bonne façon de répondre à la
la situation est d'utiliser une fonction qui
déballe la chaîne dans un tableau. Ici
est très simple de cette fonction:"

Donc, il semble que j'ai besoin de décompresser ces valeurs dans une chaîne de caractères et de les transmettre à travers l'utilisation de cette procédure stockée. Une idée sur comment je peux obtenir que cela fonctionne?

EDIT 3: j'ai réussi à le résoudre à l'aide de charindex() et la fonction convert(), tout en réglant eux au sommet. Merci à tous pour votre aide et je m'excuse encore une fois d'être une douleur.

L'affichage du tableau de définition et quelques exemples de lignes, les requêtes et les réponses attendues, permettrait d'améliorer la qualité des réponses.
Des excuses pour ne pas donner une explication complète, tout en éprouvant quelques difficultés techniques, alors que je suis rayonnages de ma cervelle à ce problème.
Il n'est pas encore clair quel est le problème. Le problème est que vous ne pouvez pas faire ce que vous voulez faire (pourquoi ne pouvez-vous pas simplement construire la À déclaration dans le code de l'entrée de l'utilisateur?) - ou êtes-vous préoccupé par les questions de sécurité soulevées par l'article lié? Je tiens vraiment à vous soucier de ce dernier, si c'est une application assis sur l'internet.
Le problème est que comme il est dit dans l'article. Je reçois ce genre d'erreur lors de l'utilisation EN "erreur de Syntaxe de la conversion de la valeur varchar "9, 12, 27, 37' à une colonne de type de données int." Ces location_id doivent être vérifiés auprès de ceux qui existent à l'intérieur de la colonne dans la base de données et que c'est pour une application web. Après avoir regardé cette procédure, le point principal me semble être charindex(). Je aimerais être en mesure de faire un tableau à partir de cette "liste" de pré-inséré, de sorte qu'ils peuvent être contrôlés.
On dirait que vous avez construit le EN comme ceci: ('9, 12, 27, 37') et votre colonne sous-jacente est un int (comme il est apparu). Essayez d'utiliser: (9, 12, 27, 37). Pas de guillemets.

OriginalL'auteur Mike B | 2009-06-23