暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DM达梦数据库中大写敏感介绍分享

108

 https://mmbiz.qpic.cn/mmbiz_gif/UjtaQrDaZOnkeEWDTgD2kYb6XtQV8l40LdgzL3ATf6E8ic93LbicrDV8h6E1NvnoK0h6bTKibmsSXPF7Hibjlj2UyQ/640?wx_fmt=gif&from=appmsg&tp=webp&wxfrom=5&wx_lazy=1

DM
中的大小写敏感指的是包括对象名敏感+列值大小写字符敏感(这里的是否敏感使用初始化参数 CASE_SENSITIVE
 进行指定)

大小写敏感

  • • 大写对象 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'
    的行

大小写不敏感

  • • 大写对象和小写对象为 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:表现同 DM-敏感情况


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

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

结语

希望以上内容能助大家一臂之力,解决工作中的难题。欢迎随时交流探讨,感谢您的关注和支持




 

文章转载自国产数据库学堂,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论