达梦数据库的大小写敏感
本文于 3 天前发布,最后更新于 3 天前

一、简单概述

达梦数据库中的大小写敏感指的是对象名敏感+列值大小写字符敏感。

受初始化参数 CASE_SENSITIVE 指定。

二、敏感与不敏感

  • 敏感【CASE_SENSITIVE=1】
    • 大写对象 T 和小写 t 对象为 2 个对象,其中小写对象需要使用双引号进行指定
      • 如 表”t” 和T指的是 2 个表
      • 列”Id”和id指的是 2 个列
    • 不特意添加双引号指定对象为小写时,默认转为大写存储
      • create table t(id int); 查询user_tables名称将显示为T
      • 表t和T指的是 1 个表
      • 列Id、ID、iD和id指的是 1 个列
    • 对象查询时,查询小写对象必须以双引号包裹,否则查询对象为大写对象
      • 如 查询表”t”需要写成 select * from “t”;
    • 列值大小写字符敏感,查大写只返回大写,查小写只返回小写
      • 如 select * from t where name =’Ab’; 将返回 name=’Ab’的行,不会返回’AB’、’ab’、’aB’ 的行
  • 不敏感【CASE_SENSITIVE=0】
    • 大写对象和小写对象为 1 个对象,即使创建对象时使用双引号指定也是一样的
      • 如 表”t”与T是 1 个表
      • 列”Id”和 id 、ID、iD 指的是 1 个列
    • 对象存储时以对象创建时的大小写为准,无需用户手动添加双引号,系统自动处理,如创建时使用小写,存储的就是小写
      • 如 create table tT(id int); 查询 user_tables 名称将显示为 tT
    • 对象查询时不区分对象大小写,即使查询时加双引号也是一样,查询的都是同一个对象
      • 如 查询表”t”,可以写成 select * from “t”; 或 select * from t; 或 select * from T;
    • 查询列值时不区分大小写,查询大写字符或小写字符都将返回大写+小写
      • 如 select * from t where name =’Ab’; 将返回 name=’Ab’、’AB’、’ab’、’aB’ 的行

三、对比其他数据库

对比 Oracle:敏感情况一致

对比 MySQL 中的敏感配置分为对象名敏感、文件系统上的文件名敏感、列值字符敏感

  • 对象名敏感相关参数:lower_case_table_names=0 表示库中对象名统一小写存储。
  • 文件系统上的文件名敏感相关参数:lower_case_file_system,OFF表示文件名区分大小写,ON表示不区分大小写。
  • 列值大小写字符默认不敏感,如果需要返回敏感的结果,相关配置:
    • 通过排序集进行配置,如创建表的时候指定 collate 为 utf8_bin 或指定列的排序集
    • binary 查询可以匹配与指定字符大小写一致的字符(binary 方式 DM 已做兼容)
暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇