我有一个存储大量代码的数据库,这些代码用于验证表单的提交。当我运行以下查询时,我得到零行
SELECT * FROM `codes` WHERE `voucher` = 'JTBLYNQ9HA'
但是当我运行以下查询时,它会带回包含代码的单行。
SELECT * FROM `codes` WHERE `voucher` LIKE CONVERT( _utf8 '%JTBLYNQ9HA%' USING latin1 ) COLLATE latin1_swedish_ci LIMIT 0 , 30
我做错了什么导致第一个查询失败,或者最好使用第二个查询?
感谢您的帮助
答案 0 :(得分:1)
这两个查询不相同。第一个是寻找代码,其凭证完全是“JTBLYNQ9HA”,第二个是寻找代码,其凭证包含该字符串(例如,“ABCDEFGJTBLYNQ9HAHIJKLM”)。
字符集转换和COLLATE
几乎肯定无关紧要。