以下是关于MySQL、Oracle、达梦(DM)和SQL Server在环境、标识符和字符串的维度上是否区分大小写
环境:
- MySQL:在Windows上不区分,在Linux上区分
- Oracle:不区分
- DM (达梦):本身是不区分,但是Windows安装达梦工具时,会默认勾选区分大小写
- SQL Server:不区分
标识符(如表名、列名等):
对于标识符的大小写敏感性,这通常取决于数据库的配置和操作系统。
- MySQL:在Linux系统上,标识符默认是区分大小写的。但在Windows系统上,由于文件系统不区分大小写,MySQL也默认不区分标识符的大小写。你可以通过设置
lower_case_table_names系统变量来更改这个行为。 - Oracle:Oracle数据库默认不区分标识符的大小写。但是,如果你使用双引号包围标识符,那么Oracle将区分大小写。
- DM (达梦):达梦数据库默认不区分标识符的大小写。
- SQL Server:SQL Server默认不区分标识符的大小写。但是,你可以使用方括号
[]来强制区分大小写。
字符串:
对于字符串的大小写敏感性,这通常取决于查询中使用的比较运算符和可能的数据库设置。
- MySQL:在比较字符串时,如果不使用二进制字符串比较(例如
BINARY关键字或COLLATE子句),则默认不区分大小写。 - Oracle:Oracle默认不区分字符串的大小写,除非你使用了二进制比较或特定的排序规则。
- DM (达梦):达梦数据库默认不区分字符串的大小写。
- SQL Server:SQL Server默认不区分字符串的大小写。但是,你可以使用
COLLATE子句来指定特定的排序规则,从而改变大小写敏感性。
具体设置区分大小写的方法:
- MySQL:在Linux上,无需额外设置即可区分大小写。
在Windows上,可以通过设置lower_case_table_names为0来强制区分大小写。
-- 设置MySQL在Windows上区分大小写
SET GLOBAL lower_case_table_names = 0;
- Oracle:使用双引号包围标识符来强制区分大小写。
-- 创建一个区分大小写的表名
CREATE TABLE "MyTable" (id INT);
- DM (达梦):
修改配置文件
在达梦数据库的配置文件(如dm.ini或dm.cnf)中,可以设置“lower_case_table_names”参数来控制大小写敏感。该参数有以下三个可选值:
- 0:表示不区分大小写(默认值)。
- 1:表示区分大小写。
- 2:表示将所有表名转换为小写。
例如,要将数据库设置为大小写敏感,可以将“lower_case_table_names”设置为1。
- SQL Server:使用方括号
[]来强制区分标识符的大小写,或使用COLLATE子句来指定字符串比较的大小写敏感性。
-- 创建一个区分大小写的表名
-- 创建一个区分大小写的列名
CREATE TABLE MyTable ([ColumnName] INT);
-- 使用COLLATE子句进行区分大小写的字符串比较
SELECT * FROM MyTable WHERE MyColumn COLLATE Latin1_General_BIN = 'SomeValue';
1526

被折叠的 条评论
为什么被折叠?



