2012-02-27 93 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

我不明白为什么第一个会失败看到代码是完全一样的表中。我会坚持第二个,并删除转换和collat​​e.Thanks – Peter 2012-02-28 08:57:52