web-dev-qa-db-ja.com

パラメータクエリSQLを構築するC#-LIKE%

LIKE %%コマンドを含むクエリのC#でパラメータクエリのSQLを作成しようとしています。

これが私が達成しようとしていることです(データベースはFirebirdであることに注意してください)

var SQL = string.format("SELECT * FROM {0} WHERE {1} LIKE '%?%'", TABLE, NAME);
 cmd.Parameters.AddWithValue(NAME, "JOHN");

これで、パラメーターを機能させるためにすべての順列を試しました。試しました。

  • %文字をパラメータに追加します。

    cmd.Parameters.AddWithValue(NAME, "%" + "JOHN" + "%");
    
  • または

    cmd.Parameters.AddWithValue(NAME, "'%" + "JOHN" + "%'");
    

これを機能させることができないようです。LIKEクエリのパラメータを使用するにはどうすればよいですか。

提案は大歓迎です!

17
Myhiad

クエリの文字列リテラル内にパラメータを含めることはできません。値全体をパラメーターにし、ワイルドカードを文字列に追加します。

var SQL = string.format("SELECT * FROM {0} WHERE {1} LIKE ?", TABLE, NAME);
Cmd.Parameters.AddWithValue(NAME, "%" + "JOHN" + "%");
27
Guffa
var SQL = string.Format("SELECT * FROM {0} WHERE {1} LIKE '%' + ? + '%'", TABLE, NAME);
Cmd.CommandText = SQL;
Cmd.Parameters.Add("?", SqlDbType.VarChar, 50).Value = "JOHN";
4
Joel Coehoorn