sql - SQL Server 中的 LIKE 运算符区分大小写吗?

标签 sql sql-server-2005 varchar sql-like

documentation about the LIKE operator ,没有说明它的大小写敏感性。是吗?如何启用/禁用它?

我正在 Microsoft SQL Server 2005 安装上查询 varchar(n) 列(如果有的话)。

最佳答案

区分大小写的不是运算符,而是列本身。

执行 SQL Server 安装时,会为实例选择默认排序规则。除非另有明确说明(请检查下面的 collat​​e 子句),当创建新数据库时,它会从实例继承排序规则,而当创建新列时,它会从它所属的数据库继承排序规则。

sql_latin1_general_cp1_ci_as这样的排序规则指示应如何处理列的内容。 CI 代表不区分大小写,AS 代表区分重音。

完整的排序规则列表可在 https://msdn.microsoft.com/en-us/library/ms144250(v=sql.105).aspx 处找到。

(a) 检查实例排序规则

select serverproperty('collation')

(b) 检查数据库排序规则

select databasepropertyex('databasename', 'collation') sqlcollation

(c) 使用不同排序规则创建数据库

create database exampledatabase
collate sql_latin1_general_cp1_cs_as 

(d) 使用不同排序规则创建列

create table exampletable (
    examplecolumn varchar(10) collate sql_latin1_general_cp1_ci_as null
)

(e) 修改列排序规则

alter table exampletable
alter column examplecolumn varchar(10) collate sql_latin1_general_cp1_ci_as null

可以更改实例和数据库排序规则,但不会影响以前创建的对象。

还可以动态更改列排序规则以进行字符串比较,但在生产环境中强烈不建议这样做,因为成本极高。

select
  column1 collate sql_latin1_general_cp1_ci_as as column1
from table1

关于sql - SQL Server 中的 LIKE 运算符区分大小写吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14962419/

相关文章:

sql - 查找具有包含 xml 字符串值的字段的所有表

sql - 从 Safaris 客户端数据库中选择随机行

java - Android 应用程序 - 连接到 Google Cloud SQL

sql-server-2005 - NHibernate elt 字段

sql - 将表重命名为 sp_help 并且无法将其重命名回来

utf-8 - Firebird - UTF8 VarChar 大小

mysql - 如何在不创建B+Tree INDEX的情况下使MySQL字段唯一

php - 从 SQL Server 检索时某些图像的一部分丢失

sql-server - Sql Server 2005 自动完成

c# - 在 SQL Server 中使用 sql_variant 而不是 varchar 有什么好处吗?