2012-07-31 6 views
0

많은 LIKE 구문이있는 쿼리가 있습니다. 나는 잘 실행되는 쿼리를 설명/설명하고 싶습니다. 나는이 복사 그러나 경우에 : 나는 '%decke%'를 추가 할하지만 난 %%을 사용하는 경우 MySQL은 오류를 던지고 계속 매개 변수로MySQL LIKE를 사용하는 올바른 구문은 무엇입니까?

SELECT a.*, p.ek, p.vk, p.waehrung, p.onlinepreis 
    FROM arts a USE INDEX (i_aktiv, i_iln, i_marke) 
     LEFT JOIN pls p ON 
      p.iln = a.iln 
     LEFT JOIN fbs zu 
      ON a.farbe = zu.farbe 
      WHERE a.aktiv = "ja" 
      AND (
     a.artikelbezeichnung LIKE ? 
    OR a.artikelbezeichnung_lang LIKE ? 
      OR ( a.farbe LIKE '%decke%' 
       OR zu.systemfarbe LIKE '%decke%' 
       OR zu.systemfarbe_en LIKE '%decke%' 
       ) 
           ) 
      ) 
     ... 

.

내가 뭘 잘못하고 있는지 아는 사람이 있습니까?

내가 갖는 오류 :

당신이 % 'LIKE a.farbe (OR에서'... 근처 % '%'decke의 %를 확인 .... 당신의 SQL 구문에 오류가 decke %의 '비교를 LIKE 와일드 카드를 들어 ...

+1

그리고 오류 매개 변수화 한 곳. 정확히 뭐야? – paxdiablo

+0

나는 정확한 형식을 사용했고 저를 위해 잘 작동했습니다. – cstrat

+0

흠 ... % '%'일 수 있습니까? – frequent

답변

4

, 당신은 가짜에 있습니다

WHERE somefield LIKE CONCAT('%', ?, '%') 

와일드 카드' '좋아하다 쿼리가 그들의 얼굴에 평평하게 떨어

+0

... 글쎄, wildcarded LIKEs와 동적 FROM 절 ... –

+1

어떤 증거? 나는 그것을 믿을 수 없거나 google 할 수 없다. 왜 매개 변수는'% foo %'문자열이 될 수 없습니까? – zerkms

+0

원한다면'% foo %'를 전달할 수 있습니다.하지만 그럴 수는 있지만, 미리 매개 변수의 값을 마사지해야합니다. 당신은'LIKE '%? %''을 가질 수 없습니다. 확실히 작동하지 않습니다. –

관련 문제