在不區分大小寫的 SQL Server 7.0/2000 實例上,預設字串比較會忽略大小寫(如 'Bambi2000' = 'bambi2000')。若需驗證密碼時嚴格區分大小寫,可利用 CAST(... AS varbinary) 進行二進位比較。
DECLARE @user_passWord VARCHAR(12);
SET @user_passWord = 'BamBi2000'; -- 使用者輸入
IF CAST(@user_passWord AS varbinary(12)) = CAST('BamBi2000' AS varbinary(12))
PRINT 'PassWord match';
ELSE
PRINT 'PassWord mismatch';
varbinary 比較是逐位元組比對,故 'B' (0x42) 與 'b' (0x62) 不相等。SQL Server 2000 支援在資料行層級指定 COLLATE(如 Chinese_PRC_CS_AS 區分大小寫),建表時即可設定:
CREATE TABLE Users (
UserName VARCHAR(50),
PassWord VARCHAR(50) COLLATE Chinese_PRC_CS_AS -- 此欄位區分大小寫
);
此後該欄位比較自動區分大小寫,無需每次 CAST。
HASHBYTES('SHA2_256', ...))加鹽儲存。varbinary 比較。