一直以來我們都認為數據庫語句是不區分大小寫,其實這是錯誤的認識,之所以不區分是因為數據庫語言不區分大小寫。這里我們以mssql2005中自帶的AdventureWorksDW數據庫為例。
執行以下語句
SELECT databasepropertyex('AdventureWorksDW','collation')
go
select top 1 * from Dimaccount
運行結果:
這里的Dimaccount表名應該是DimAccount(表名大小寫問題),然后執行以下語句:
alter database AdventureWorksDW COLLATE SQL_Latin1_General_CP1_CS_AS
go
select top 1 * from Dimaccount
運行結果:
運行select top 1 * from DimAccount一切正常
所以說sql語句不區分大小寫這種說法是不對,是否區分主要看數據庫COLLATE 屬性是否區分大小。
_CI_AI 不區分大小寫、不區分重音、不區分假名類型、不區分寬度
_CI_AI_WS 不區分大小寫、不區分重音、不區分假名類型、區分寬度
_CI_AI_KS 不區分大小寫、不區分重音、區分假名類型、不區分寬度
_CI_AI_KS_WS 不區分大小寫、不區分重音、區分假名類型、區分寬度
_CI_AS 不區分大小寫、區分重音、不區分假名類型、不區分寬度
_CI_AS_WS 不區分大小寫、區分重音、 不區分假名類型、區分寬度
_CI_AS_KS 不區分大小寫、區分重音、區分假名類型、不區分寬度
_CI_AS_KS_WS 不區分大小寫、區分重音、區分假名類型、區分寬度
_CS_AI 區分大小寫、不區分重音、 不區分假名類型、不區分寬度
_CS_AI_WS 區分大小寫、不區分重音、不區分假名類型、區分寬度
_CS_AI_KS 區分大小寫、不區分重音、區分假名類型、不區分寬度
_CS_AI_KS_WS 區分大小寫、不區分重音、區分假名類型、區分寬度
_CS_AS 區分大小寫、區分重音、不區分假名類型、不區分寬度
_CS_AS_WS 區分大小寫、區分重音、不區分假名類型、區分寬度
_CS_AS_KS 區分大小寫、區分重音、區分假名類型、不區分寬度
_CS_AS_KS_WS 區分大小寫、區分重音、區分假名類型、區分寬度