2

次のように、整数のリストを SQLTemplate IN 句にバインドしようとしています。

SELECT * FROM table1 WHERE id IN ( #bind($idList) );

私はIDの文字列を持っています:

idList = "1, 2, 3, 4";

バインドを正常に機能させることができません。確認する ID のリストとして文字列を渡すと、値が返されません。

これを実行するには、文字列連結を使用する必要があります (理想的ではありません)。

どうすれば適切にバインドできるかについてのアイデアはありますか?

前もって感謝します。

(私は Java/Cayenne/Postgres を使用しており、パラメーターとして渡された idList を使用してクエリを実行しています。これは単純化された例であり、実行している実際の SQL ではありません)。

更新私はそれを行う方法を考え出しました。以下に答えてください。

4

1 に答える 1

2

OK、質問を投稿するとすぐにその方法がわかりました。

文字列の代わりに、次のように整数のリストを使用します。

List<Integer> ids = {1,2,3,4,5} (pseudocode) 

バインドを行うには、次のものが必要です。

SELECT * FROM table1 WHERE id IN ( #bind($idList, 'INTEGER') );

次に、通常どおりパラメーターを渡すと機能します。

于 2009-02-05T04:35:13.970 に答える