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

リストが列内にある場合はどうなりますか?文中のMS-SQL

私はこれをしようとは、エラーになります。

Select a, b, c from a in b 

私の質問をクリアしていないため申し訳ありませんが。

それはおよそ

列B型はデータ型はnvarchar(表からBを選択)でまたはに参加していない、データがリストは、この '1,2,5'

列Aのように、ありますtypeはintです。

+0

質問が不明です。あなたのテーブルは何ですか?列は何ですか?あなたが達成できないクエリの期待される結果は何ですか? –

答えて

-3

あなたはテーブルに参加したいと思いますか?

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

カラムbはリストです。 – March

0

SQLでは、通常、列は数字、日付/時刻、文字列などのいわゆる「スカラー」データ型の1つです。 MSDN。あなたがどのような意味でよりよく説明すれば、列bに "リスト"が得られます。 CREATE TABLE a声明を表示すると、おそらくあなたを助けることができます!それを行う必要があります

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) 

を:

1

あなたの質問を読んだ後、これはあなたが望むものです。

+0

いいえ、そうではありません。コンマの配置に注目してください。既にそれをカバーしている。ブヤヤ。 – Eric

+0

@エリック:そうです、コメントを削除します。 – Andomar

1

右方向を指し、多くの答えが、私はこの1つは実際に動作すると思います:

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

あなたが始まり、カンマで終わるBを強制することによって、これをスピードアップすることができます。あるいは、データベースを正規化して、列Bを1対多の関係で独自のテーブルに移動します。