문제

나는 c#의 매개 변수 쿼리 용 SQL을 LIKE %% 명령.

다음은 제가 달성하려는 내용입니다 (데이터베이스는 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" + "%'");
    

이 작업을 수행 할 수없는 것 같습니다. 유사한 쿼리가 작동하는 매개 변수를 어떻게 사용할 수 있습니까?

제안을 환영합니다!

도움이 되었습니까?

해결책

쿼리에 문자열 리터럴 내부에 매개 변수가 없을 수 없습니다. 전체 값을 매개 변수로 만들고 와일드 카드를 문자열에 추가하십시오.

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

다른 팁

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

과거 에이 작업을 수행 할 때, 나는 단순히 SQL에 통합하여 단일 따옴표를 물음표로 바꾸어 SQL 주입을 처리해야합니다. 예 :

var SQL = string.format("SELECT * FROM {0} WHERE {1} LIKE '%{2}%'",
  TABLE,
  NAME,
  JOHN.Replace("'","?"));
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top