简介:
case_sensitive参数用来设置字符串比较是否大小写敏感,用于确定数据库对象及数据是否区分大小写,默认为区分,不可更改。根本目的是为了兼容不同的数据库,从MYSQL和SQLSERVER 迁移过来的系统,建议使用大小写不敏感;从 ORACLE迁移过来的系统,建议使用大小写敏感,以便和原来系统匹配。
可以通过SELECT SF_GET_CASE_SENSITIVE_FLAG();查询是否大小写敏感库,1表示敏感,0表示不敏感。查询结果如下图所示:
举例测试:
大小写敏感测试:
初始化一个大小写敏感的实例,分别建表test与Test,会提示对象TEST已存在。然后在此基础上为test添加双引号”test”,不会出现错误,说明创建”test”表创建成功。如下图所示:
在”test”表中插入数据,然后进行查询,结果与test表中的数据不相同,说明test表与”test”表不是同一张表。查询结果如下图所示:
由此可以得出结论:不加双引号,创建表时会自动将表名和列名自动转换成大写形式,加双引号表名和列名则会保留原形式。create table test和create table "test"是不同的,前者会自动转换成TEST。
大小写不敏感测试:
初始化一个大小写不敏感的实例用作实验。
通过disql连接并执行相同的脚本,显示对象test已存在。
说明在大小写不敏感的实例中,创建test表不会转换为TEST,所以在此基础上创建”test”表示会提示对象test已存在。
总结:
1.大小写敏感
(1)不加双引号,创建表时会自动将表名和列名自动转换成大写形式,加双引号表名和列名则会保留原形式。
(2)大小写不同的两个表是不同对象。
(3)一个表中,允许存在同名但大小写形式不同的字段。
(4)如果不加双引号,SQL语句中表名和对象名会被自动转成大写。
(5)对于表中字符数据是严格区分大小写的。
2.大小写不敏感
(1)无论对不对表名或列名加双引号,表名和列名大小写形式不会发生变化,创建时是大写就是大写,是小写就是小写。
(2)不允许存在同名的数据库对象,即使大小写不同也算同名。
(3)一个表中,不允许出现相同字段名,大小写不同也算同名。
(4)字段字符内容也不区分大小写,无论是大写还是小写都认为是相同的值。