2012-02-27 3 views
0

У меня есть база данных, в которой хранится большое количество кодов, эти коды используются для подтверждения отправки формы. Если когда-нибудь я выполнить следующий запрос я получить нулевые строки обратноПоиск кодов в базе данных mysql

SELECT * FROM `codes` WHERE `voucher` = 'JTBLYNQ9HA' 

, но когда я запускаю следующий запрос он вернуть одну строку с кодом в нем.

SELECT * FROM `codes` WHERE `voucher` LIKE CONVERT(_utf8 '%JTBLYNQ9HA%' USING latin1) COLLATE latin1_swedish_ci LIMIT 0 , 30 

Что я делаю неправильно, который вызывает первый запрос к сбою или должен это рекомендуется использовать второй запрос?

Спасибо за помощь

ответ

1

Два запроса не эквивалентны. Первый ищет код, чей ваучер точно «JTBLYNQ9HA», второй ищет код, чей ваучер содержит эту строку (например, «ABCDEFGJTBLYNQ9HAHIJKLM»).

Преобразование символов и COLLATE почти наверняка не имеют значения.

+0

Я не понимаю, почему первый из них не смог бы увидеть, так как код точно такой же, как в таблице. Я буду придерживаться второго и удалить конверсию и сопоставить. Спасибо. – Peter

Смежные вопросы