我在第三方软件的SQL Server(2000)数据库中工作,我注意到如果我运行以下查询:
SELECT Field_1, Field_2, Field_3 FROM TableName WHERE employee_ID = '00123'
它抛出错误:
列名'employee_ID'无效。
但如果我把它改为:
SELECT Field_1, Field_2, Field_3 FROM TableName WHERE Employee_ID = '00123'
运行正常。该列使用大写“E”版本。我总是能够指定列名而不考虑大小写。是否存在某些我不知道的设置会使SQL Server区分大小写?
答案 0 :(得分:1)
使用排序规则可以使SQL Server模式区分大小写
您可以使用ALTER DATABASE语句更改排序规则,也可以使用ALTER TABLE在表级别更改排序规则。
可在此处找到更多信息:
http://www.databasejournal.com/features/mssql/article.php/3302341/SQL-Server-and-Collation.htm http://support.microsoft.com/kb/325335
答案 1 :(得分:0)
可能影响此设置的其中一个设置是数据库的排序规则。此外,master数据库的排序规则设置可以影响数据库名称,系统存储过程等的解析。
答案 2 :(得分:0)
如果您的数据库是使用指定为区分大小写的排序规则的默认排序规则创建的,则您的对象名称和列名称将区分大小写。
我认为默认排序规则是SQL_Latin1_General_CP1_CI_AS
。 Selectiong SQL_Latin1_General_CP1_CS_AS
将为您提供区分大小写的等效项。
请注意,默认值可能会有所不同,具体取决于SQL Server的版本以及安装SQL Server的框中的区域性/区域设置。
我自己,我发现区分大小写的对象名称是皇家PITA。 YMMV。