有一个SQL语句如下:
mysql> select date_format(consumetime,'%Y年%m月') 月份, sum(case consumetype when '必须支出' then money else 0 end) 必须支出 from dailyconsume group by date_format(consumetime,'%Y年%m月');执行后必须支出栏位的值总是0。
然后我将数据库里“必须支出”改为某个英文单词如“aaa”,然后相应修改上面的语句,结果执行正确。这样看来好象是中文字符的问题,但是下面这个语句却可以执行:
select * from dailyconsume where consumttype = '必须支出'
操作系统为WIN7家庭版
配置文件内容如下:
[mysqld]
# 设置mysql的安装目录
basedir=D:\mysql\mysql-5.1.6-alpha-win32
# 设置mysql数据库的数据的存放目录,必须是data,或者是\\xxx\data
datadir=D:\mysql\mysql-5.1.6-alpha-win32\data
# 设置mysql服务器的字符集
default-character-set=utf8[client]
# 设置mysql客户端的字符集
default-character-set=gbk
mysql> select date_format(consumetime,'%Y年%m月') 月份, sum(case consumetype when '必须支出' then money else 0 end) 必须支出 from dailyconsume group by date_format(consumetime,'%Y年%m月');执行后必须支出栏位的值总是0。
然后我将数据库里“必须支出”改为某个英文单词如“aaa”,然后相应修改上面的语句,结果执行正确。这样看来好象是中文字符的问题,但是下面这个语句却可以执行:
select * from dailyconsume where consumttype = '必须支出'
操作系统为WIN7家庭版
配置文件内容如下:
[mysqld]
# 设置mysql的安装目录
basedir=D:\mysql\mysql-5.1.6-alpha-win32
# 设置mysql数据库的数据的存放目录,必须是data,或者是\\xxx\data
datadir=D:\mysql\mysql-5.1.6-alpha-win32\data
# 设置mysql服务器的字符集
default-character-set=utf8[client]
# 设置mysql客户端的字符集
default-character-set=gbk
MySQL 中文显示乱码
show variables like 'char%'的结果如下:如何修改,请指点,谢谢!
character_set_client gbk
character_set_connection gbk
character_set_database utf8
character_set_filesystem binary
character_set_results gbk
character_set_server utf8
character_set_system utf8
character_set_dir D:\....
character_set_connection gbk
character_set_results gbk把这三个都设定为 UTF8 ,你的问题应该就可以解决.
这两个语句都是在本机DOS窗口下跑出来的,服务器和客户端都在本机上,统一编码什么意思,把服务器和客户端的编码设为一致?
我很奇怪,为什么用CASE判断就不等,用=判断却可以得到相等的结果。
各位大侠,麻烦再给些建议!