SQLServer 查询语句指定排序规则(查询时区分大小写)
介绍
可以使用 COLLATE 子句将字符表达式应用于某个排序规则。 为字符文本和变量分配当前数据库的默认排序规则。 为列引用分配列的定义排序规则。
COLLATE
定义数据库或表列的排序规则,或应用于字符串表达式时的排序规则强制转换操作。 排序规则名称既可以是 Windows 排序规则名称Windows_collation_name
,也可以是 SQL 排序规则名称SQL_collation_name
。
COLLATE 子句仅适用于 char、varchar、text、nchar、nvarchar 和 ntext 数据类型。
参考文档
示例
指定排序规则
创建测试数据
create table #ceshi(id int, bh varchar(10))
insert into #ceshi
values(1, 'a'), (2, 'A'), (3, 'b'), (4, 'B')
bh
列按Chinese_PRC_CI_AS
规则排序(小写字母优先)
select * from #ceshi order by bh COLLATE Chinese_PRC_CI_AS
查询结果
id | bh |
---|---|
1 | a |
2 | A |
3 | b |
4 | B |
bh
列按SQL_Danish_Pref_CP1_CI_AS
规则排序(大写字母优先)
select * from #ceshi order by bh COLLATE SQL_Danish_Pref_CP1_CI_AS
查询结果
id | bh |
---|---|
2 | A |
1 | a |
4 | B |
3 | b |
查询时区分大小写
创建测试数据
create table #ceshi(id int, bh varchar(10))
insert into #ceshi
values(1, 'aa'), (2, 'Aa')
不区分大小写
select * from #ceshi where bh = 'aa' COLLATE Chinese_PRC_CI_AS
查询结果
id | bh |
---|---|
1 | aa |
2 | Aa |
区分大小写
select * from #ceshi where bh = 'aa' COLLATE Chinese_PRC_CS_AI
查询结果
id | bh |
---|---|
1 | aa |