可能な二重にIN句を作成する:私は、SQL Server 2008を使用していますし、これは私が直面しています問題です
Need help in dynamic query with IN Clause動的ストアドプロシージャ
。私は列会社を持つCarsというテーブルを持っています。今、私はこの
CREATE PROCEDURE FindCars (@CompanyNames varchar(500)) AS SELECT * FROM Cars WHERE Company IN (@CompanyNames)
私はこのような何かを試してみましたが、私は任意の行が返されますいけない
DECLARE @CompanyNames varchar(500) SET @CompanyNames = '''Ford'',''BMW''' exec FindCars @CompanyNames
を失敗したようになりますストアドプロシージャを持っています。私は、次の
DECLARE @CompanyNames varchar(500) SET @CompanyNames = '''Ford'',''BMW''' Select @CompanyNames
を行うと、私は次のような結果
'Ford','BMW'
を取得し、私は、ストアドプロシージャ内のSELECT文でこの値を交換した場合、それはこのように
SELECT * FROM Cars where Company in ('Ford','BMW')
の作品Iストアドプロシージャは配列ではなく1つの文字列として'Ford','BMW'
を処理しているように思えます。誰かがこれで私を助けてくれますか?ストアドプロシージャ内のselect文のIN句に必要な文字列/配列を動的に構築する方法
だけポイントを追加するために、私は、これは '選択する方が良いと思います*車から 内部結合 ( \t選択項目からdbo.split_string(@ input_string) )k on K.Item = Company'なぜなら、あなたは 'IN'を使って反復を行っているからです。述語 –
最初の方法は私がお勧めする方法です。ここで素敵な分割関数を見つけることができます: [http://www.sqlservercentral.com/articles/Tally+Table /72993/](http://www.sqlservercentral.com/articles/Tally+Table/72993/) – lennin92