SQLServer 大小写敏感配置

本文介绍如何在SQL中设置表及脚本的大小写敏感性,包括不区分大小写与区分大小写的配置方法,并解释了不同排序规则的含义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 设置表内大小写敏感

1 ALTER TABLE 表名
2 ALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CI_AS 
3 --不区分大小写
4 
5 
6 ALTER TABLE tb 
7 ALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CS_AS 
8 --区分大小写 

 设置SQL脚本大小写不敏感

USE [master] 
GO 
ALTER DATABASE [DatabaseName] COLLATE Chinese_PRC_CI_AI 
GO

 

 设置大SQL脚本大小写敏感

USE [master] 
GO 
ALTER DATABASE [DatabaseName] COLLATE Chinese_PRC_CS_AI 
GO

 

 设置参考值


  _CI_AI   不区分大小写、不区分重音、不区分假名类型、不区分宽度       
  _CI_AI_WS   不区分大小写、不区分重音、不区分假名类型、区分宽度       
  _CI_AI_KS   不区分大小写、不区分重音、区分假名类型、不区分宽度       
  _CI_AI_KS_WS   不区分大小写、不区分重音、区分假名类型、区分宽度       
  _CI_AS   不区分大小写、区分重音、不区分假名类型、不区分宽度       
  _CI_AS_WS   不区分大小写、区分重音、   不区分假名类型、区分宽度       
  _CI_AS_KS   不区分大小写、区分重音、区分假名类型、不区分宽度       
  _CI_AS_KS_WS   不区分大小写、区分重音、区分假名类型、区分宽度       
  _CS_AI   区分大小写、不区分重音、   不区分假名类型、不区分宽度       
  _CS_AI_WS   区分大小写、不区分重音、不区分假名类型、区分宽度       
  _CS_AI_KS   区分大小写、不区分重音、区分假名类型、不区分宽度       
  _CS_AI_KS_WS   区分大小写、不区分重音、区分假名类型、区分宽度       
  _CS_AS   区分大小写、区分重音、不区分假名类型、不区分宽度       
  _CS_AS_WS   区分大小写、区分重音、不区分假名类型、区分宽度       
  _CS_AS_KS   区分大小写、区分重音、区分假名类型、不区分宽度       
  _CS_AS_KS_WS   区分大小写、区分重音、区分假名类型、区分宽度 

 

  *CS(Case-Sensitivity缩写):CS 指定区分大小写

   CI(Case-Insensitivity缩写):CI 指定不区分大小写。 

  常用的语言集为:Chinese_PRC_CI_AS

 

 举例分析
 
  Chinese_PRC_CS_AI_WS   

  前半部份:指UNICODE字符集,Chinese_PRC_指针对大陆简体字UNICODE的排序规则。   

  排序规则的后半部份即后缀 含义:   

  _BIN 二进制排序   

  _CI(CS) 是否区分大小写,CI不区分,CS区分   

  _AI(AS) 是否区分重音,AI不区分,AS区分    

  _KI(KS) 是否区分假名类型,KI不区分,KS区分    

  _WI(WS) 是否区分宽度 WI不区分,WS区分 

  区分大小写:如果想让比较将大写字母和小写字母视为不等,请选择该选项。  

  区分重音:如果想让比较将重音和非重音字母视为不等,请选择该选项。如果选择该选项,比较还将重音不同的字母视为不等。  

  区分假名:如果想让比较将片假名和平假名日语音节视为不等,请选择该选项。   

  区分宽度:如果想让比较将半角字符和全角字符视为不等,请选择该选项

转载于:https://www.cnblogs.com/sandunban/p/7272291.html

### SQL Server 的大小写敏感设置及规则 SQL Server 默认情况下是区分大小写的,这是因为其默认的排序规则(Collation)通常是 `Chinese_PRC_CI_AS` 或类似的大小写敏感规则[^3]。然而,在某些场景下可能需要对数据进行大小写敏感的操作,这可以通过调整排序规则或修改数据库/结构来实现。 #### 数据库级别的大小写敏感设置 如果希望整个数据库都支持大小写敏感操作,则可以在创建数据库时指定相应的排序规则,或者通过修改现有数据库的排序规则来实现。例如: ```sql -- 创建一个大小写敏感的新数据库 CREATE DATABASE TestDB COLLATE Chinese_PRC_CS_AS; -- 修改现有数据库大小写敏感 ALTER DATABASE TestDB COLLATE Chinese_PRC_CS_AS; ``` 需要注意的是,修改数据库的排序规则可能会引发一些潜在问题,比如索引失效或其他依赖于原排序规则的功能受到影响[^4]。 #### 字段级别的大小写敏感设置 除了在整个数据库层面启用大小写敏感外,还可以针对特定字段单独配置。这种方法更加灵活且会影响其他部分的数据处理逻辑。例如: ```sql -- 修改字段 full_name_ 使其支持大小写敏感 ALTER TABLE t_mate ALTER COLUMN full_name_ VARCHAR(200) COLLATE Chinese_PRC_CS_AS; ``` 这样做的好处在于只会影响该字段的行为,而会改变整个数据库的全局行为。 #### 查询中的动态大小写敏感控制 对于临时性的需求,可以直接在查询语句中加入 `COLLATE` 关键字以实现大小写敏感匹配。这种方式无需更改任何物理结构即可完成目标。例如: ```sql SELECT * FROM t_mate WHERE full_name_ = 'Test' COLLATE Chinese_PRC_CS_AS; SELECT * FROM t_mate WHERE full_name_ LIKE 't%' COLLATE Chinese_PRC_CS_AS; ``` 上述方法适用于仅需在某次查询过程中应用大小写敏感的情况,而必永久性地调整数据库的设计[^1][^2]。 --- ### 总结 SQL Server 提供了多种机制用于管理大小写敏感度,具体选择取决于实际应用场景的需求。无论是从数据库级别还是单个列的角度出发,都可以找到合适的解决方案来满足业务要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值