创建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;
阅读(2120) | 评论(1) | 转发(0) |