神通数据库支持数据库大小写敏感与非敏感设置,具体包括以下几种:
1.数据大小写不敏感,默认敏感
2.查询投影列名称返回小写.,默认返回大写(双引号强制小写的除外)
3.投影列按实际样式返回,默认返回大写(双引号强制小写的除外)
4.select * 方式返回投影列名称小写,默认返回大写(双引号强制小写的除外)
5.表名和列名加""匹配大写
敏感与非敏感是通过参数控制的,下面进行说明:
1.数据大小写不敏感设置
数据库存储数据默认是大小写敏感的,有些项目特殊,想要数据大小写不敏感,即通过AB去匹配ab、AB、Ab、aB都能匹配上,针对数据库数据大小写不敏感设置需要在创建数据库时指定,并且是全不对象生效。默认不指定是大小写敏感
CASESENSITIVE ##(敏感)
CASEINSENSITIVE ##(不敏感)
--创建一个数据大小写不敏感的数据库实例
CREATE DATABASE OSRDB CASEINSENSITIVE ENCODING 'UTF8';
2.查询投影列名称返回小写
神通数据库默认投影列返回全大写(双引号强制小写的除外),有的业务场景,查询投影列有大写、小写、驼峰等情况,想在查询时返回投影列名称为小写。即select A,b,Cc from tab;返回投影列的原信息是a|b|cc,此操作与返回的数据无关,仅针对投影列名称,设置参数即可实现:
set lower_column=true;
3. 投影列按实际样式返回
神通数据库默认投影列返回全大写(双引号强制小写的除外),有业务场景想要投影列能够按照实际输入的情况返回,即select A,b,Cc from tab;返回投影列名称A|b|Cc
set COLUMN_CASE_SENSITIVE=true;
4.select * 方式返回投影列名称小写
select * 方式比较特殊,没有指定具体投影列,返回表内全部字段名称作为投影列,默认以数据库内存储的表的元定义为准返回,神通数据库默认是不区分大小写的,表元定义存储为大写(双引号强制小写除外),所以默认select * 返回的投影列为大写情况,可通过设置参数,设置其返回投影列名称转为小写
##两个参数需要同时设置
set COLUMN_CASE_SENSITIVE=true; #列名按实际输入返回
set lower_star_column=TRUE; #select * 返回小写字段
5.表明和列名加双引号强制大小写后也可匹配大写
数据库默认是不区分大小写的,表和字段名称在元信息中存储默认都是大写,有时业务查询语句中查询字段和表明加双音号强转,想要强转后也可查询相应字段,如select "A","a" from tab,"A"和"a"都可以查询tab表的A字段。如果建表时指定"a"强制小写,"A"是怎么也无法匹配的
set NAME_CASE_SENSITIVE=FALSE;
此参数默认为true,即表明和列名加双引号强制小写是不能匹配大写的,保留数据库原有逻辑,默认不区分大小写,使用双引号强制区分大小写。