2009-06-01 5 views
1
Select a, b, c from table where a in (1, 2, 3) 

Que faire si la liste est dans une colonne?MS-SQL Dans l'instruction

J'essaie ceci d'erreur:

Select a, b, c from a in b 

Désolé pour ne pas effacer ma question.

Il est pas joindre ou dans (sélectionner b de la table)

colonne b type est nvarchar, les données sont une liste, comme celui-ci '1,2,5'

Colonne a le type est int.

+0

Votre question n'est pas claire. Quelles sont vos tables? Quelles sont leurs colonnes? Quel est le résultat attendu de la requête que vous ne parvenez pas à obtenir? –

Répondre

-3

Je pense que vous voulez JOINDRE les tables?

SELECT a, b, c 
FROM a 
JOIN b ON a.ID=b.ID 
+0

La colonne b est une liste. – March

0

Dans SQL, une colonne est normalement d'un des soi-disant types de données « scalaires »: numéros, date/heure, les chaînes - voir par exemple MSDN. Si vous expliquez mieux dans quel sens vous avez "une liste" dans la colonne b, et comment, par ex. montrez-nous la déclaration CREATE TABLE a, nous pouvons peut-être vous aider à mieux!

1

Après avoir lu votre question, voici ce que vous voulez:

SELECT 
    a,b,c 
FROM 
    tblA 
WHERE 
    b LIKE CAST(a as nvarchar) + ',%' 
    OR b LIKE '%,' + CAST(a as nvarchar) + ',%' 
    OR b LIKE '%,' + CAST(a as nvarchar) 

Cela devrait le faire.

+0

Non ce ne serait pas. Notez le placement des virgules. Je l'ai déjà couvert. Booyah. – Eric

+0

@Eric: Vous avez raison, je vais supprimer le commentaire. – Andomar

1

De nombreuses réponses pointant dans la bonne direction, mais je pense que celui-ci va vraiment travailler:

SELECT a, b, c 
FROM table 
WHERE ',' + b + ',' LIKE '%,' + CAST(a as varchar) + ',%' 

Vous pouvez accélérer ce par l'application démarre B et se termine par une virgule. Ou mieux encore, normaliser la base de données et déplacer la colonne B vers sa propre table avec une relation un-à-plusieurs.

Questions connexes