为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。 【DM版本】:8 【操作系统】:win10 【CPU】: 【问题描述】*:请问查询语句的库名、表名、字段名都必须用引号括起来吗?不用引号会报错?
您好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 查询可以匹配与指定字符大小写一致的字符
您好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 查询可以匹配与指定字符大小写一致的字符