日期:2014-05-16  浏览次数:20877 次

MySQL存储过程中汉字字符串的比较实现
在MySQL的存储过程中,对某一属性值与中文字符串进行比较,无法正确进行比较!
  cmd中对于mysql中直接写入的中文字符能够进行识别,但是对于通过delphi的ADO控件进行输入的中文字符串,输出字符串为乱码。于是将问题定位于字符集的问题的上,进行相关问题搜索,set names 'gbk',可以实现delphi输入中文字符在cmd下的正确显示,但是存储过程中仍然无法进行正确比较,希望各位能够给予赐教,谢谢!

------解决方案--------------------
检查你的字符集设置。

http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码
------解决方案--------------------
引用9. 存储过程参数乱码

create procedure t ( aa char(10) charset 'gbk')


未完。。。

------解决方案--------------------
show variables like 'char%'; 
估计是字符集不统一
------解决方案--------------------
set names 'gbk';
对以前建立的表、插入的数据没有影响

用mYSQLDUMP导出数据->在统一的gbk字符集下重新建立库、表->导入数据

my.ini
[mysql]

default-character-set=gbk

重新启动MYSQL

------解决方案--------------------
探讨

字符集我用了set names 'gbk';
能够在cmd中显示中文,但是set names只是暂时的修改字符集参数,永久的修改,我还没试过,担心修改了之后恢复不了的。但是set names 'gbk'之后,我在统一的gbk字符集下,重新建立了表单,但是依旧没能进行中文比较。是不是暂时性的修改无效,必须要永久性的修改后,再重新建立表单才能有效啊?谢谢您了!
引用:
sho……

------解决方案--------------------
不但数据库中编码要统一,你代码用的编码最好也和数据库统一