1

アイテムのテーブルがあり、他の場所から形成および取得された文字列内でアイテムIDが見つかった行を選択する必要があります。たとえば、一致する文字列は次のようになります。

'100684','103223','103228'

または私はそれを剥がして生産することができます:

100684,103223,103228

しかし、私は次の試みから何の成功も得ていません:

SQL = "SELECT * FROM Table Where ID LIKE '" & strString & "'  "
SQL = "SELECT * FROM Table Where ID IN '" & strString & "'  "
SQL = "SELECT * FROM Table Where PATINDEX('%" & ID & "%','" & strString & "') > 0 "
SQL = "SELECT * FROM Table Where PATINDEX(ID,'" & strString & "') > 0 "
SQL = "SELECT * FROM Table Where CHARINDEX(ID, '" & strString & "') > 0 "

これらは結果を生成できないか、次のようなエラーを出します

charindex関数の引数1の引数データ型intが無効です

4

3 に答える 3

2

文字列のストリップバージョンを使用して試してください

SQL = "SELECT * FROM Table Where ID IN (" & strString & ")"
于 2013-01-26T07:14:58.043 に答える
1

STRING から INT への変換が役立ちます

SQL = "SELECT * FROM Table Where ID = CONVERT(INT,'"&strString &"')"
于 2013-01-26T07:16:37.843 に答える
0

経験則として、パラメーターとして渡された文字列を SQL クエリ テキストに連結しないでください。

正しいアプローチは、名前付きパラメーターまたはテーブル値パラメーターのいずれかを使用することです。次のようなSQLクエリで終了します。

 SQL = "SELECT * FROM Table Where id IN (@p1, @p2, @p3)"   

次に、@p1、@p2、@p3 の適切な値を渡して呼び出します。さまざまな数の @p を使用して文字列を動的に作成しても問題ありません。

渡す値が 2100 を超える場合は、テーブル値パラメーターを使用する必要があります。

最後に、スプリッターを使用して T-SQL で文字列を安全に解析することもできます。Jeff Moden は、テキストの効率的な分割に関する SSC に関する優れた記事を書いています: http://www.sqlservercentral.com/articles/Tally+Table/72993/

于 2013-01-26T08:05:04.743 に答える