2012-02-27 4 views
0

私は、多数のコードを格納するデータベースを持っています。これらのコードは、フォームの提出を検証するために使用されます。これまで私は次のクエリを実行するとき、私はゼロ行戻ってmysqlデータベースでコードを検索する

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

しかし、私はそれをコードで1つの行を持って来る。

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

最初のクエリが失敗する原因となるのは間違っていますか、2番目のクエリを使用するのがベストプラクティスですか。

ありがとうございます

答えて

1

2つのクエリは同等ではありません。最初のものはバウチャーが正確に "JTBLYNQ9HA"であるコードを探していて、2番目はバウチャーにその文字列が含まれているコードを探しています(たとえば "ABCDEFGJBBLYNQ9HAHIJKLM")。

文字セット変換とCOLLATEはほとんど関係ありません。

+0

なぜ私は、コードが表のものとまったく同じであるので、最初のものが見えなくなるのか理解できません。私は2番目のものに固執し、変換を取り除き、照合します。 – Peter