SQL Server 关于字母大小写

本文详细介绍如何在SQLServer中修改数据库的大小写敏感性,包括整体数据库设置及特定字段的大小写敏感调整方法。

SQLServer默认不区分表名、字段名和值的大小写,以下是手动修改方法:

1.修改数据库不区分大小写
  alter database 数据库名称 COLLATE Chinese_PRC_CI_AS
  如:alter database my_test COLLATE Chinese_PRC_CI_AS
2.修改数据库区分大小写
  alter database 数据库名称 COLLATE Chinese_PRC_CS_AS
  如:alter database my_test COLLATE Chinese_PRC_CS_AS

3.修改数据库各行记录内容是否区分大小写:(一般在查询时的where条件中使用)

  不区分大小写
  alter database 数据库名称 alter column 字段名称 字段类型 COLLATE Chinese_PRC_CI_AS
  如:alter database zjk_cx alter column DBConn varchar(500) COLLATE Chinese_PRC_CI_AS
  区分大小写
  alter database 数据库名称 alter column 字段名称 字段类型 COLLATE Chinese_PRC_CS_AS
  如:alter database zjk_cx alter column DBConn varchar(500) COLLATE Chinese_PRC_CS_AS

转载于:https://www.cnblogs.com/xyddm/p/11090228.html

### SQL Server 中实现区分大小写的查询 在 SQL Server 中,默认情况下,字符串比较行为取决于所使用的排序规则(Collation)。为了执行区分大小写的查询而保持字段区分大小写,可以采用特定的排序规则来处理字符串匹配。 当需要对某个列的内容做区分大小写的查找时,在 `WHERE` 子句中指定合适的排序规则即可。例如: ```sql SELECT * FROM table_name WITH (NOLOCK) WHERE column_name COLLATE Latin1_General_BIN = 'SpecificValue' ``` 这里使用了二进制排序规则 `Latin1_General_BIN` 来确保字符对比是严格区分大小写的[^1]。需要注意的是,这种做法只影响该达式的比较方式,并会改变数据库级别的默认排序规则设定。 对于结构设计而言,通常建议让所有的对象称遵循一致的大写或小写字母习惯,这样即使是在同的会话环境下也能正常识别这些对象而必担心因大小写敏感带来的问题。另外,如果希望在整个服务器范围内统一应用某种排序规则,则可以在创建实例之初就选定相应的配置选项;而对于现有环境来说,也可以通过修改数据库属性的方式调整其默认排序规则,但这可能会影响到已有的应用程序逻辑以及性能现,因此需谨慎操作。 至于字段本身,SQL Server 默认就是按照区分大小写的方式来解析的,除非安装时特别指定了 CASE_SENSITIVE 属性给整个实例或者单独设置了某库/模式下的排序规则为区分大小写版本。所以一般需要额外采取措施去保证这一点。 ### 实现案例 假设有一个为 `Users` 的格,其中包含用户字 (`UserName`) 和电子邮件地址 (`Email`). 若要检索所有邮箱地址等于 "example@domain.com" 并且区分大小写的记录,可编写如下 SQL 查询语句: ```sql SELECT UserName, Email FROM Users WITH (NOLOCK) WHERE Email COLLATE Latin1_General_BIN = 'example@domain.com'; ``` 此命令将返回那些确切符合所提供电子信箱参数的结果集,即仅考虑到了字母顺序也包括它们各自的大小写形式.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值