3

IN パラメーターを LIKE ステートメント内で機能させるために何時間も戦っています。私は CachedRowSet を使用していますが、これは PreparedStatement と同じ規則に従う必要があることを理解しています。
基本的なクエリは次のとおりです。

CachedRowSet cache;
String sql = "SELECT x " +
                "FROM   Y " +
             "WHERE z LIKE '?__'" 

cache.setCommand(sql);
cache.setString(1, "someString");

someString は既知の ID ですが、データベース (ちなみに PostgreSQL) エントリには不明な 2 文字のサフィックスがあります。

4

1 に答える 1

5

引用符内のパラメーター プレースホルダーは無視されます。それらはリテラル "?" として解釈されます。パラメータを使用する場合は、プレースホルダーを SQL 式の引用符の外側に配置する必要があります。

ただしLIKE、任意の文字列または文字列を生成する式と比較できます。例えば:

SELECT x FROM y WHERE z LIKE (? || '__')

パラメータに「someString」を指定すると、定数 string と連結されます'__'

于 2009-01-29T03:51:40.260 に答える