在 documentation about the LIKE operator ,没有说明它的大小写敏感性。是吗?如何启用/禁用它?
我正在 Microsoft SQL Server 2005 安装上查询 varchar(n)
列(如果有的话)。
最佳答案
区分大小写的不是运算符,而是列本身。
执行 SQL Server 安装时,会为实例选择默认排序规则。除非另有明确说明(请检查下面的 collate 子句),当创建新数据库时,它会从实例继承排序规则,而当创建新列时,它会从它所属的数据库继承排序规则。
像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/