0

我有一堆 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%' 
                 )
                                ) 
            )
         ...

作为我想添加'%decke%'的参数,但如果我使用%%.

知道我做错了什么吗?

我得到的错误是:

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

4

1 回答 1

5

对于通配符 LIKE 比较,您必须伪造它:

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

通配符“喜欢”是参数化查询在他们的脸上平淡无奇的一个地方。

于 2012-07-31T02:44:45.520 回答