2、在代码上对传入的关键字进行CONVERT编码转换
如上面的例子的sql:
SELECT id,mail_2011_06_22.service_code,cur_time,concat('mail_2011_06_22') as tabName,'mail' as service FROM mail_2011_06_22 WHERE 1=1
AND
( state_type=3 OR ( state_type=0 AND flag !=0) ) AND (service_type='0003' OR service_type='0004' OR service_type='0005' OR (service_type='0006' AND direction='0' ) ) AND
( state_type=3 OR ( state_type=0 AND flag !=0) )
AND ( CONCAT_WS('',mail_2011_06_22.host,mail_2011_06_22.account,mail_2011_06_22.send,mail_2011_06_22.recv,mail_2011_06_22.cc,mail_2011_06_22.bcc ,mail_2011_06_22.title, mail_2011_06_22.text,mail_2011_06_22.raw_info,mail_2011_06_22.accessory) like CONVERT('%资源共享%' USING GBK)
OR CONCAT_WS('',mail_2011_06_22.host,mail_2011_06_22.account,mail_2011_06_22.send,mail_2011_06_22.recv,mail_2011_06_22.cc,mail_2011_06_22.bcc ,mail_2011_06_22.title, mail_2011_06_22.text,mail_2011_06_22.raw_info,mail_2011_06_22.accessory) like CONVERT('%资源共享%' USING UTF8)
OR CONCAT_WS('',mail_2011_06_22.host,mail_2011_06_22.account,mail_2011_06_22.send,mail_2011_06_22.recv,mail_2011_06_22.cc,mail_2011_06_22.bcc ,mail_2011_06_22.title, mail_2011_06_22.text,mail_2011_06_22.raw_info,mail_2011_06_22.accessory) like CONVERT('%资源共享%' USING BIG5))
上面的sql实现了对gbk, utf8, big5不统一查询。
这种方式的优点:用户统一查询,省掉了不必要的用户操作。
缺点:增加编码方式的修改会比较麻烦。查询效率没有那么高(究竟效率怎样,没有去测试)。