最近為一個系統要加入使用者帳號認證,在測試時才發現無論key入大寫或是小寫,都可以通過認證進入管理介面,之後找出了問題在於忽略了SQL Server 定序對於大小寫的區分。
寫下這篇文章也是給自己做個筆記 ^_^
如果在安裝SQL Server未特別指定資料庫定序的話,預設會是
Chinese_Taiwan_Stroke_CI_AS
其中的 _CI:不分大小寫;_AS:區分腔調字
相反的,如果要區分大小寫的話就必須用
_CS:區分大小寫;_AI:不區分腔調字
因此在對應要區分大小寫的使用者帳號、密碼時的SQL語法即可使用:
SELECT *
FROM user_admin
WHERE user_pwd = 'xxxxxxx' COLLATE Chinese_Taiwan_Stroke_CS_AI
COLLATE 是 SQL 關鍵字,用以進行定序之轉換。
想知道全部的資料庫定序清單的話,可以在SSMS中使用以下語法:
SELECT * FROM fn_helpcollations()
參考資料:COLLATE (Transact-SQL)
2009年9月25日 星期五
訂閱:
張貼留言 (Atom)

沒有留言:
張貼留言