2009年9月25日 星期五

【Tips】SQL查詢時設定大小寫認定

最近為一個系統要加入使用者帳號認證,在測試時才發現無論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)

沒有留言: