首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

在 SQL Server 中實現區分大小寫的字串比較

     編輯:關於SqlServer

情境

預設安裝的 SQL Server 為不區分大小寫排序規則。若需在密碼驗證等場景進行嚴格大小寫比較,有以下兩種做法。

方法一:資料行層級指定區分大小寫排序規則 (SQL Server 2000+)

ALTER TABLE Users
ALTER COLUMN Password VARCHAR(50) COLLATE SQL_Latin1_General_CP1_CS_AS;  -- _CS = Case Sensitive

之後該欄位比較自動區分大小寫:

SELECT * FROM Users WHERE Password = 'BamBi2000';  -- 僅符合完全相同大小寫

方法二:轉換為二進位比較 (通用所有版本)

將字串轉為 VARBINARY 再比較,利用位元層級差異達成區分大小寫:

DECLARE @input VARCHAR(50) = 'BamBi2000';

IF CAST(@input AS VARBINARY(50)) = CAST('BamBi2000' AS VARBINARY(50))
    PRINT '密碼正確';
ELSE
    PRINT '密碼錯誤';

補充:常用區分大小寫排序規則名稱

  • SQL_Latin1_General_CP1_CS_AS (大小寫、重音敏感)
  • Latin1_General_CS_AS (Windows 排序規則,同樣區分大小寫)

命名規則:_CS = Case Sensitive (區分大小寫),_CI = Case Insensitive (不區分)。

總結

SQL Server 2000 以上建議使用資料行排序規則,語意清晰且效能最佳;舊版本或跨版本相容專案可採用 CAST(... AS VARBINARY) 技巧。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved