Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1634520
  • 博文数量: 201
  • 博客积分: 2812
  • 博客等级: 少校
  • 技术积分: 3029
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-18 18:28
个人简介

从事数据库工作多年,目前看好分布式NeSQL/HTAP数据库在企业客户市场的发展。未来的主要方向是——致力于 NewSQL/HTAP 数据库的推广普及。

文章存档

2016年(1)

2015年(8)

2014年(23)

2013年(50)

2012年(32)

2011年(87)

分类: Sybase

2011-01-24 16:18:15

   创建IQ数据库时,我们需要指定IQ数据库的字符集。在指定字符集时一定要仔细考虑,一旦创建之后是不能再修改的!
   我有一个用户,他们使用其他RDBMS的习惯是"采用ISO_1字符集"。因此,在为IQ数据库指定字符集时也延续了这个习惯。在IQ中,Collation ISO_1还真存在,不过这种字符集在进行排序和比较时并不是采用完全二进制的方式(binary sort order),这样就会导致某些汉字,比如“军”和“钧”等,被视为相同的汉字,从而造成结果错误。有兴趣的读者,可以做个试验
    create table test(name char(8))
    insert into test values('军')
    insert into test values('钧')
    commit
    select * from test where name = '军' 
 
    执行上面的select语句,按说应当返回一条记录,但是对于Collation为ISO_1的IQ数据库,返回的却是2条记录!
    所以,我们在创建数据库时应当使用Collation ISO_BINENG而不要使用ISO_1。而如果存放中文,建议最好使用936ZHO!
 
    例如:
CREATE DATABASE '/sybiqdb/mp2/mp2.db'
     LOG ON 'mp2.log'
     CASE RESPECT
     ACCENT IGNORE
     PAGE SIZE 4096
     COLLATION 'ISO_BINENG' --不要指定ISO_1
     BLANK PADDING ON
     JCONNECT ON
     IQ PATH '/sybiqdb/mp2/MP2_SYS_MAIN_FILE01.iq' --IQ_SYSTEM_MAIN
     TEMPORARY PATH '/sybiqdb/mp2/MP2_SYS_TEMP_FILE01.iqtmp' --IQ_SYSTEM_TEMP
     MESSAGE PATH 'mp2.iqmsg'
     IQ PAGE SIZE 131072;
 
阅读(2154) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

andkylee2011-03-01 19:53:42

1> select ascii(left('钧',1)),ascii(right('钧',1))
2> go

----------- -----------
         190         251

(1 row affected)
1> select ascii(left('军',1)) ,ascii(right('军',1))
2> go

----------- -----------
         190         252

(1 row affected)
1> select char(190