免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1892 | 回复: 7

大家试一下这个例子? [复制链接]

论坛徽章:
0
发表于 2007-02-15 18:09 |显示全部楼层
你随便建立一个数据库,然后将如下表、视图、数据导入,然后再导出整个数据库检查导出的文件[/b]中英文显示是否正常。我将my.ini文件 数据库 表等字符集设为latin1 gb2312 gbk utf8 等均有不能正常显示的现象。本来使用latin1字符集 插入中文 显示中文数据库均没问题,但是后来建立了视图,as后面的中文导出也没问题,但有一个表的字段(czy.leve)是数字 我需要在视图中将其转换为中文显示 所以加了if条件,没想到的是 无论怎样设字符集 当导出数据库后 这个视图中的if中的中文均显示为`????` 如下兰字处是导出后的效果,但将数据库设为utf8时 这个视图导出中文显示没问题 但其它汉字显示或英文字段名显示就有问题,反正视图中if条件正常了,就有的地方不正常。
if((`czy`.`leve` = 1),
    _utf8'?????',
    if((`czy`.`leve` = 2),
    _utf8'?????',
    _utf8'?????')) AS `级别`


其中utf8是我修改数据库字符集造成的 大家可以随便更改字符集。

求教如何设置数据库字符集 或加什么参数导出数据库 不出现以上问题,大家在你的机器上试试。我原以为mysql5.10版本的问题 结果更换了5.0.22也是如此。




drop table if exists `czy`;
CREATE TABLE `czy` (
  `czycode` char(4) NOT NULL,
  `czyname` varchar(30) default null,
  `leve` tinyint(1) default NULL,
  PRIMARY KEY  (`czycode`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312


drop VIEW if exists `view_czy`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `view_czy` AS
  select
    `czy`.`czycode` AS `代码`,
    `czy`.`czyname` as `姓名`,
    if((`czy`.`leve` = 1),
    '操作员',
    if((`czy`.`leve`=2),
    '出纳员',
    if((`czy`.`leve`=9),
    '管理员','其它'))) AS `级别`
  from
    `czy`
  order by
    `czy`.`czycode`;
   
INSERT INTO `czy` (`czycode`, `leve`, `czyname`) VALUES
  ('0000',1,'李三'),
  ('0001',2,'李四');

论坛徽章:
0
发表于 2007-02-16 16:25 |显示全部楼层
大家试过没有

论坛徽章:
0
发表于 2007-02-16 19:46 |显示全部楼层
"导出整个数据库" 是指mysqldump?

好像中文导出的都是乱码啊,干嘛弄这么复杂,又是表又是视图的


---没看清问题,不好意思
---关注

[ 本帖最后由 fnems 于 2007-2-25 20:58 编辑 ]

论坛徽章:
0
发表于 2007-02-16 19:49 |显示全部楼层
还有
`czyname` varchar(30) default null,
这一句最好再加上一条binary
`czyname` varchar(30) binary default null,
不然会有点小麻烦,比如“磊”和“龙”会被识别成一个字符,
大家可以试试啊

论坛徽章:
0
发表于 2007-02-16 19:52 |显示全部楼层
再有,你给的table定义和insert好像对不起来吧?

CREATE TABLE `czy` (
  `czycode` char(4) NOT NULL,
  `czyname` varchar(30) default null,
  `leve` tinyint(1) default NULL,
  PRIMARY KEY  (`czycode`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312

--------------

INSERT INTO `czy` (`czycode`, `leve`, `czyname`)



MySQL学得不多,刚接触没一星期

还请各位观众指教啊

论坛徽章:
0
发表于 2007-02-17 14:44 |显示全部楼层
原帖由 fnems 于 2007-2-16 19:46 发表
"导出整个数据库" 是指mysqldump?

好像中文导出的都是乱码啊,干嘛弄这么复杂,又是表又是视图的


是用mysqldump导出 一个完整的数据库结构包括表、视图、函数、过程、触发器等
根据开发需要创建

原帖由 fnems 于 2007-2-16 19:49 发表
还有
`czyname` varchar(30) default null,
这一句最好再加上一条binary
`czyname` varchar(30) binary default null,
不然会有点小麻烦,比如“磊”和“龙”会被识别成一个字符,
大家可以试试啊

加不加binary是根据我程序开发的需要 ,该字段不参加比较和检索就没必要加

原帖由 fnems 于 2007-2-16 19:52 发表
再有,你给的table定义和insert好像对不起来吧?


insert 语句不一定要和定义一致,只要字段和值相对应即可


不懂请不要随便指点

论坛徽章:
0
发表于 2007-02-21 18:13 |显示全部楼层
呵呵,说得没错,我确实不懂。你懂行的也随便说,我不计较哈哈

还是得谢谢你,才注意到insert 还能这样用

[ 本帖最后由 fnems 于 2007-2-25 20:58 编辑 ]

论坛徽章:
0
发表于 2007-02-25 17:25 |显示全部楼层
新年好 大家试一下这个例子
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP