使用MySQL LIKE的正确语法?

fre*_*ent 0 mysql select sql-like

我有一堆LIKE状态查询.我想optizimze /解释查询,运行正常.但是,如果我复制这个:

 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%' 
                 )
                                ) 
            )
         ...
Run Code Online (Sandbox Code Playgroud)

作为我想要添加的参数,'%decke%'但MySQL不断抛出错误,如果我使用的话%%.

知道我做错了什么吗?

我得到的错误是:

你的SQL语法有错误....在OR附近检查...%'%'decke%'(a.farbe LIKE'%decke%'...

Mar*_*c B 5

对于通配的LIKE比较,你必须伪造它:

WHERE somefield LIKE CONCAT('%', ?, '%')
Run Code Online (Sandbox Code Playgroud)

通配符"喜欢"是参数化查询在他们的脸上平放的一个地方.