SQLServer 查询语句指定排序规则(查询时区分大小写)

发布时间 2023-07-15 15:16:28作者: txgh

SQLServer 查询语句指定排序规则(查询时区分大小写)

介绍

可以使用 COLLATE 子句将字符表达式应用于某个排序规则。 为字符文本和变量分配当前数据库的默认排序规则。 为列引用分配列的定义排序规则。

COLLATE

定义数据库或表列的排序规则,或应用于字符串表达式时的排序规则强制转换操作。 排序规则名称既可以是 Windows 排序规则名称Windows_collation_name ,也可以是 SQL 排序规则名称SQL_collation_name

COLLATE 子句仅适用于 char、varchar、text、nchar、nvarchar 和 ntext 数据类型。

参考文档

COLLATE

示例

指定排序规则

创建测试数据

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