Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1620740
  • 博文数量: 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

2012-08-02 12:15:02

   IQ在创建数据库时可以通过"CASE RESPECT"或"CASE IGNORE" 选项指定“是否区分大小写”。Sybase官方手册中给定的说明不容易看懂,不太容易搞清楚“区分大小写”的准确含义。本文将结合实际的例子加以说明,力争让大家能够准确的把握其含义,从而做到正确使用。毕竟一旦创建数据库之后就不能再改变数据库的大小写区分属性了,如果设置错误想要再修改那就非常麻烦了。下面就结合例子加以说明:
 
1. 创建示例数据库
 
CREATE DATABASE '/home/sybiq15/test/mp2.db'
 JAVA ON
 JCONNECT ON
 --CASE RESPECT   --区分大小写
 CASE IGNORE      --不区分大小写
 BLANK PADDING ON
 COLLATION '936ZHO'
 IQ PAGE SIZE 131072
 PAGE SIZE 4096
 IQ PATH '/home/sybiq15/test/mp2_iq_main.iq' 
 IQ SIZE 60  --60M
 TEMPORARY PATH '/home/sybiq15/test/mp2_iq_temp.iq'
 TEMPORARY SIZE 20 --20M;
  
2. 是否区分大小写的一些例子
 
  (1) 对象名    
   上面的例子在建库时指定 CASE IGNORE ,那么对象名(表名、字段名、存储过程名)就不区分大小写了,否则区分。

    比如 :create table t1(id int, name char(8)) 建立的表,可以使用:
    select * from T1,也可以使用select * from t1。 即表明不再区分大小写
 
    执行存储过程时比如:  sp_iqtable,也可以写成SP_IQTABLE

 
 (2)表中存放的数据
    执行 insert into T1 values(1,'WangBing') 插入的数据还是按照你输入的数据大小写存储,执行:
(DBA)> select * from T1
id          name    
--------------------
1           WangBing
 
 
     为了确定其真实的存储,可以执行下面语句:
(DBA)> select convert(binary,name) from t1
name                                                                                                                                                                                                                                                            
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
0x57616e6742696e
 
     我们可以看到,'W'的ASCII是0x57。
 
 (3)执行比较操作
 
     对于“不区分”大小写的IQ数据库,虽然存储的数据区分大小写,但是执行比较操作时却不区分大小写
     例如:

 
(DBA)> select * from T1 where name = 'wangbing'
id          name    
--------------------
1           WangBing
 
(DBA)> select * from T1 where name = 'wanGbIng'
id          name    
--------------------
1           WangBing
 
  (4)如何获知当前数据是否区分大小写
     使用select case_sensitivity from sysinfo 可以看到当前数据库“区分大小写的情况”:如果是'Y'表示区分,如果是'N’表示不区分。

 
 
阅读(2948) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~