首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

SQL Server 單表列級大小寫敏感設置:ALTER COLUMN COLLATE 實戰

     編輯:程式設計綜合問答

需求

僅對某表的特定列(如密碼列)啟用大小寫敏感,不影響全庫其他列。

操作語句

-- 修改單列排序規則為大小寫敏感 (CS = Case Sensitive)
ALTER TABLE Users
ALTER COLUMN Password NVARCHAR(100) COLLATE Chinese_PRC_CS_AS;

-- 驗證
SELECT * FROM Users WHERE Password = 'Abc123'; -- 區分大小寫
SELECT * FROM Users WHERE Password = 'abc123'; -- 不匹配上條

-- 恢復不區分大小寫 (CI = Case Insensitive)
ALTER TABLE Users
ALTER COLUMN Password NVARCHAR(100) COLLATE Chinese_PRC_CI_AS;

注意事項

  • 列必須無 PRIMARY KEY、FOREIGN KEY、CHECK、DEFAULT 等約束,否則需先刪除約束再修改再重建。
  • 索引會自動重建,大表操作可能較慢,建議維護窗口執行。
  • 排序規則名稱:Chinese_PRC_CS_AS(中文、大小寫敏感、重音敏感),Chinese_PRC_CI_AS(不區分大小寫)。
  • 全庫級別修改:ALTER DATABASE MyDB COLLATE Chinese_PRC_CS_AS; 影響後續新建表/列的默認值,不改變現有列。

查詢時顯式指定

若不想修改表結構,可在查詢中指定:

SELECT * FROM Users WHERE Password = 'Abc123' COLLATE Chinese_PRC_CS_AS;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved