1

クエリに含める値のリストをパラメーターとして受け取るストアド プロシージャがあります。例えばNY, NJ, CT, PA

ストアド プロシージャの動的 SQL クエリで、レコードを選択したい

WHERE state IN ('NY', 'NJ', 'CT', 'PA'). 

SPに到達するときにパラメーターを使用すると、次のようになります

WHERE state IN 'NY, NJ, CT, PA'.

したがって、変換する必要があります

'NY, NJ, CT, PA' 

('NY','NJ','CT','PA').

それを行う機能はありますか?

ありがとう!

ねえ、ケビンはここで正しい方向を示したと思います。私がする必要があるのは次のとおりです。

WHERE state IN REPLACE(('NY, NJ, CT, PA'), ',' , ''',''')

または、私は本当に変数にそれを持っているので...

WHERE state IN REPLACE ((@StateList), ',' , ''',''')
4

3 に答える 3

1

関数なしでそれを行う楽しい方法は次のとおりです。

DECLARE @StateList VARCHAR(50)='NY, NJ, CT, PA' --(substitute for your parameter)
SELECT * FROM Table WHERE ',' + REPLACE(@StateList,' ','') + ',' LIKE '%,' + State + ',%'
于 2012-05-17T14:40:01.287 に答える
1

これを行うには多くの方法があります。簡単な方法の 1 つは、それらを一時テーブル (@temp_states など) に挿入して、次のようにすることです。

WHERE state in (SELECT state from @temp_states)

それらをテーブルに挿入する代わりに、次のような関数を使用してテーブルを生成できます。

WHERE state in (SELECT * from dbo.Split(',', 'NY,NJ,CT,PA'))
于 2012-05-17T14:30:04.217 に答える
1

非常に簡単なオプションは次のとおりです。

WHERE CHARINDEX ( CONCAT (', ', state,',') ,  CONCAT (', ', @PARAM,',')) > 0
于 2012-05-17T14:37:58.223 に答える