Zástupné symboly nelze uvozovat. Jak jednoduché:
SELECT ... WHERE foo = ?
SELECT ... WHERE foo = '?'
První z nich je zástupný symbol a funguje podle očekávání. Druhým je testování rovnosti proti znaku "otazník". Už to není zástupný symbol.
A pak je tu problém ?
být také metaznak regulárního výrazu. Pokud MOHOU být zástupné symboly v uvozovkách, pak je uveďte
SELECT ... WHERE foo REGEXP '^.?'
že by to bylo ?
být zástupným symbolem dotazu, nebo je to operátor rozsahu regulárního výrazu „nula nebo jedna“?
Pokud chcete v regulárních výrazech používat zástupné symboly, musíte „sestavit“ vzor regulárních výrazů
SELECT ... WHERE foo REGEXP concat('^.', ?)
Úplně stejným způsobem, jako byste museli vytvořit LIKE
vzor:
SELECT ... WHERE foo LIKE '%?%' // wrong
SELECT ... WHERE foo LIKE concat('%', ?, '%') // right