我查询了一堆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%'
)
)
)
...
作为参数,我想添加'%decke%'
,但如果我使用%%
,MySQL会继续抛出错误。
知道我做错了吗?
我得到的错误是:
你的SQL语法有错误....在OR附近检查...%'%'decke%'(a.farbe LIKE'%decke%'...
答案 0 :(得分:5)
对于通配符LIKE比较,你必须伪造它:
WHERE somefield LIKE CONCAT('%', ?, '%')
通配符“赞”是参数化查询在他们脸上平放的一个地方。