当前位置: 首页 > java >正文

达梦数据库在大小写不敏感的情况下,如何使查询比较中依旧可以做大小写敏感比较?

​       新版达梦增强对大小写敏感比较功能,就算当前数据库已经是大小写不敏感,在SQL查询比较中依旧可以做大小写敏感比较。方法如下:

方法1:设置会话属性

字符的局部大小写敏感可以通过设置会话属性进行

语法格式 

ALTER SESSION SET CASE_SENSITIVE=<属性>;

<属性>:= DEFAULT | TRUE | FALSE

<属性> 设置为 DEFAULT 时,代表会话与当前数据库的大小写敏感属性保持一致;设置为 TRUE 时,代表在大小写不敏感的库上可以使得会话中的字符类型数据以大小写敏感的方式进行比较,而在大小写敏感的库上则维持原始方式比较;设置为 FALSE 时,代表在大小写敏感的库上可以使得会话中的字符类型数据以大小写不敏感的方式进行比较,而在大小写不敏感的库上则维持原始方式比较。

使用说明 

1. 仅当前会话有效。

2. 仅对字符类型生效,其他数据类型忽略该会话属性。

3. 创建索引时忽略该会话属性。

4. 确定性函数参数忽略该会话属性。

5. CONTAINS 表达式忽略该会话属性。

6. ALL/SOME/ANY 子查询忽略该会话属性。

7. 层次查询表达式忽略该会话属性。

8. 集函数参数包括 WITHIN GROUP 中排序表达式时忽略该会话属性。

9. 分析函数参数包括 OVER 中排序表达式、分组表达式时忽略该会话属性。

10. 该会话属性优先级低于 BINARY 前缀,即存在 BINARY 前缀时,即使会话属性被设

置为 FALSE,仍会按照大小写敏感进行比较。

举例说明 

设置当前会话为大小写敏感的方式。

ALTER SESSION SET CASE_SENSITIVE = TRUE

方法2:使用BINARY 前缀

局部大小写敏感的字符比较操作,提供 BINARY 前缀方式用于设置表达式比较时为大小写敏感。

BINARY 前缀支持范围:

1. SQL 项:查询项、过滤条件、连接条件、层次查询条件、having 条件、排序项分组项。

2. 表达式类型:逻辑比较表达式、模糊查询表达式(包括 row like)、查询表达式例如:in、逻辑比较,但不支持多列 in、多列逻辑比较)等。 BINARY 前缀在顶层查询项的含义是将查询项转换为原始值字符串 ASCII 码的十六进制形式,例如:将 123abc 转换为 0x313233616263;在除顶层查询项外的其他位置则表示该前缀修饰的表达式将按照大小写敏感进行比较,无论当前数据库为大小写敏感或不敏感。)

 

使用说明

1. 仅对字符类型生效,其他数据类型忽略 BINARY 前缀。

2. 多列比较不支持 BINARY 前缀,例如多列逻辑比较,多列 IN LIST 等。

3. 创建索引时忽略 BIANRY 前缀。

4. 确定性函数参数忽略 BINARY 前缀。

5. CONTAINS 表达式忽略 BINARY 前缀。

6. ALL/SOME/ANY 子查询忽略 BINARY 前缀。

7. 层次查询表达式忽略 BINARY 前缀。

8. 集函数参数包括 WITHIN GROUP 中排序表达式忽略 BINARY 前缀。

9. 分析函数参数包括 OVER 中的排序表达式、分组表达式忽略 BINARY 前缀

举例说明 

 在数据库初始化为大小写不敏感的情况下(即参数 CASE_SENSITIVE=0),执行查询语句,其中只有一条 and 子句添加 BINARY 前缀(即C2列按照大小 写敏感比较,C1、C3按照大小写不敏感比较)。

SELECT C1,C2,C3 FROM BT WHERE C1 = 'a' AND BINARY C2 = 'b' AND C3 = 'c';

具体内容请参考《DM8 SQL语言使用手册》第3章3.15.5小节和第4章4.16小节。

http://www.xdnf.cn/news/19771.html

相关文章:

  • FFmpeg命令行音视频工具:高效实现格式转换与批量处理,支持音频提取与精准视频剪辑
  • Parasoft C/C++test如何实现开发环境内嵌的安全检测
  • 多工况切换定向:陀螺定向短节 vs 传统陀螺工具,谁的适配性更强?
  • 【单片机day01】
  • 学习React-8-useImmer
  • TDK InvenSense CH201距离传感器
  • 还在从零开发AI应用?这个项目直接给你500个现成方案!!!
  • Autosar之Det模块
  • 智慧工地如何撕掉“高危低效”标签?三大社会效益重构建筑业价值坐标
  • 贝叶斯定理
  • WAF与CDN在网络安全中的协同作用
  • GitLens VS Code插件测评:助力代码协作高效查提交记录,轻松解决分支管理与代码冲突
  • `<meter> ` 元素 无需 JavaScript/CSS 实现密码强度提示
  • esp32小智ai对话机器人
  • 【字节拥抱开源】 UXO 团队开源 USO: 通过解耦与奖励学习实现的统一风格与主题驱动生成
  • 万和电气卢宇聪:在“慢周期”做本质的事
  • GoLand IDE 无法识别 Go 工作区中的引用,如何解决?
  • 5.kafka集群安装
  • 区间DP .
  • Android U Lmkd源码解析
  • maven 常用指令
  • 二叉树的非递归遍历 | 秋招面试必备
  • Redis分布式缓存
  • RabbitMQ消息堆积问题排查:concurrentConsumers 配置的坑与解决方案
  • js设计模式-职责链模式
  • More Effective C++ 条款24:理解虚拟函数、多继承、虚继承和RTTI的成本
  • VMWare ubuntu24.04安装(安装ubuntu安装)
  • 复杂PDF文档如何高精度解析
  • css3元素倒影效果属性:box-reflect
  • IsaacLab训练机器人