복붙노트

[SQL] 어떻게? 매개 변수 및 LIKE 문 SQL

SQL

어떻게? 매개 변수 및 LIKE 문 SQL

내가 검색 기능을 쓰고 있어요, 그리고 방지하기 위해 매개 변수를 사용하여이 쿼리의 최대 생각, 또는 적어도 한도에서, SQL 주입 공격. 그러나, 나는 내 프로그램을 통해 그것을 실행할 때 그것은 아무것도 반환하지 않습니다

compliance_corner SELECT * FROM WHERE (몸 LIKE '% @ 쿼리 %') OR (제목 LIKE '% @ 쿼리 %')

매개 변수는 다음과 같이 사용할 수 있습니까? 또는를 같이 인스턴스에서만 유효합니다 :

본체 LIKE '% <문자열> %'(<문자열>의 검색 목적) compliance_corner FROM SELECT *.

편집 : 나는 그 구문 너희들에 미치는 영향이 있습니까 기여, VB.NET이 함수를 건설하고있다?

또한, 나는이 SQL Server의 문 실행 : compliance_corner SELECT * FROM을 WHERE (몸 LIKE '% 최대 %') OR (% 최대 % LIKE 제목 ')'와 그 결과를 반환합니다.

해결법

  1. ==============================

    1.시각적 기본 코드는 다음과 같이 보일 것이다 :

    시각적 기본 코드는 다음과 같이 보일 것이다 :

    Dim cmd as New SqlCommand("SELECT * FROM compliance_corner WHERE (body LIKE '%' + @query + '%') OR (title LIKE '%' + @query + '%')")
    
    cmd.Parameters.Add("@query", searchString)
    
  2. ==============================

    2.글쎄, 난 갈 것입니다 :

    글쎄, 난 갈 것입니다 :

     Dim cmd as New SqlCommand(
     "SELECT * FROM compliance_corner"_
      + " WHERE (body LIKE @query )"_ 
      + " OR (title LIKE @query)")
    
     cmd.Parameters.Add("@query", "%" +searchString +"%")
    
  3. ==============================

    3.너가해야되는:

    너가해야되는:

    LIKE '%'+ @param + '%'

  4. ==============================

    4.당신은 예컨대 당신의 매개 변수와 % 표지판을 연결 할 수 있습니다 :

    당신은 예컨대 당신의 매개 변수와 % 표지판을 연결 할 수 있습니다 :

    LIKE '%'|| @query || '%'

    편집하다: 사실, 그것은 전혀 이해가되지 않을 수도 있습니다. 나는이 문제를 오해있을 수 있습니다 생각합니다.

  5. ==============================

    5.당신은 당신이 MS SQL / Access에서 그것을 실행할 때와 같이 VB에서 쿼리를 실행 때로는 자리 표시 자 %로 사용되는 기호는 동일하지 않습니다. *에 %에서 자리 표시 기호를 변경해보십시오. 그 힘 작동합니다. 디버깅 및 테스트하기 위해 MS SQL 또는 Access에서 직접 SQL 문자열을 복사 할 경우, 실제로 값을 반환을 위해 MS SQL 또는 Access에서 %로 기호 등을 변경해야 할 수도 있습니다.

    당신은 당신이 MS SQL / Access에서 그것을 실행할 때와 같이 VB에서 쿼리를 실행 때로는 자리 표시 자 %로 사용되는 기호는 동일하지 않습니다. *에 %에서 자리 표시 기호를 변경해보십시오. 그 힘 작동합니다. 디버깅 및 테스트하기 위해 MS SQL 또는 Access에서 직접 SQL 문자열을 복사 할 경우, 실제로 값을 반환을 위해 MS SQL 또는 Access에서 %로 기호 등을 변경해야 할 수도 있습니다.

    도움이 되었기를 바랍니다

  6. ==============================

    6.이 방법을 시도

    이 방법을 시도

    Dim cmd as New SqlCommand("SELECT * FROM compliance_corner WHERE (body LIKE CONCAT('%',@query,'%')  OR  title LIKE CONCAT('%',@query,'%') )")
    cmd.Parameters.Add("@query", searchString)
    cmd.ExecuteNonQuery()
    

    대신 +의 중고 CONCAT

  7. from https://stackoverflow.com/questions/251276/howto-parameters-and-like-statement-sql by cc-by-sa and MIT license