系统字典大小写敏感(cata_case_sensitive)
📄字数 1.0K
👁️阅读量 加载中...
引入版本
v11.0.0
功能描述
是否开启系统字典匹配时英文字母大小写敏感。
参数属性
| 属性 | 属性值 |
|---|---|
| 参数类型 | BOOLEAN |
| 默认值 | FALSE |
| 取值范围 | TRUE,FALSE |
| 影响范围 | 系统级 |
| 修改方式 | 离线修改,重启生效 |
使用场景说明
- 该参数控制系统进行字典匹配时的行为。
| cata_case_sensitive | 作用及影响 |
|---|---|
| true | 系统字典匹配时英文字母大小写敏感。 |
| false | 系统字典匹配时英文字母大小写不敏感。 |
- 该参数使用场景受制于 def_compatible_mode 的配置,def_compatible_mode 的配置会影响客户端输入的标识符在系统内部的表现形式。
| def_compatible_mode | 标识符处理方式 |
|---|---|
| NONE | 词法处理阶段统一将标识符转换为大写 |
| ORACLE | 词法处理阶段统一将标识符转换为大写 |
| MYSQL | 不做处理 |
| POSTGRESQL | 词法处理阶段统一将标识符转换为小写 |
注意
- 该参数对 SYSDBA.SYS_DATABASES、SYSDBA.SYS_SCHEMAS、SYSDBA.SYS_USERS 这三张系统表的字典匹配不生效,它们始终采用英文大小写不敏感匹配策略。
- 该参数在系统开启 enable_sys_name_idx 场景下不生效。
示例
sql
-- 离线修改 cata_case_sensitive
编辑 xugu.ini 修改 cata_case_sensitive,重启数据库服务后生效。
-- 在线查看 cata_case_sensitive
SQL> SHOW cata_case_sensitive;
/*
* 场景一:
* 1. 系统库下存在表名为 "t1" 的表;
* 2. 开启系统字典匹配大小写敏感(cata_case_sensitive = true);
* 3. 关闭兼容模式(def_compatible_mode = none);
*/
SQL> SELECT * FROM t1; -- [E5021] 表或视图不存在(虚谷在对词法解析时,会将标识符中的英文字符统一转换为大写字母);
SQL> SELECT * FROM "t1"; -- 可正常访问表数据(这里引用了虚谷特性,双引号包围的标识符会按照原始内容解析);
/*
* 场景二:
* 1. 系统库下存在表名为 "t1" 的表;
* 2. 关闭系统字典匹配大小写敏感(cata_case_sensitive = false);
* 3. 关闭兼容模式(def_compatible_mode = none);
*/
SQL> SELECT * FROM t1; -- 可正常访问表数据;