惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

腾讯CDC
Microsoft Azure Blog
Microsoft Azure Blog
B
Blog
S
SegmentFault 最新的问题
WordPress大学
WordPress大学
P
Proofpoint News Feed
Hugging Face - Blog
Hugging Face - Blog
MyScale Blog
MyScale Blog
A
About on SuperTechFans
雷峰网
雷峰网
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
The Blog of Author Tim Ferriss
MongoDB | Blog
MongoDB | Blog
博客园 - 【当耐特】
The Cloudflare Blog
F
Fortinet All Blogs
小众软件
小众软件
博客园 - 三生石上(FineUI控件)
宝玉的分享
宝玉的分享
罗磊的独立博客
量子位
有赞技术团队
有赞技术团队
V
V2EX
Engineering at Meta
Engineering at Meta

博客园 - itjeff

sql server中展示数据库所有表结构的查询语句,然后可以做Excel导出 jQuery的.each()方法中return的坑 the server responded with a status of 413 (Request Entity Too Large) 解决 js 常用函数 push()、pop()、shift()、unshift()、slice()、splice() 等 Win10 HEU KMS Activator被识别为病毒怎么办? sql server 数据库设置不区分大小写的设置 bootstraptable 列隐藏 sql server 2014 新建授权某个表的用户 list和datatable相互转化 C#的小数位保留以及四舍五入 Windows 服务器远程桌面授权120天到期 sql server 清空日志操作步骤 查看SQL Server数据库各表数据量与占用空间 SQL Server 日志文件收缩 一文说清楚http、tcp、socket、websocket区别 JS中的 解构、可扩展运算符(...) Access-Control-Allow- 设置 跨域资源共享 CORS 详解 Bootstrap 模态框(Modal)插件的基本应用 js 中的相对路径的写法
解决equal to 运算中 "Chinese_PRC_CI_AS" 和 &quo...
itjeff · 2025-03-06 · via 博客园 - itjeff

背景:在语句执行过程中碰到equal to 运算中 "Chinese_PRC_CI_AS" 和 "Chinese_PRC_CS_AS" 之间的排序规则冲突的报错时,可以用COLLATE定义和控制字符数据排序规则。

在 SQL Server 中,COLLATE 是用于定义和控制字符数据排序规则(collation)的关键字。排序规则影响字符串比较和排序的行为。以下是 COLLATE 的几种常见用法:

1. 定义列的排序规则

在创建表时,可以为字符数据列指定排序规则:

1

2

3

CREATE TABLE MyTable (

    MyColumn NVARCHAR(100) COLLATE Chinese_PRC_CI_AS

);

2. 修改列的排序规则

可以使用 ALTER TABLE 语句更改现有列的排序规则:

1 ALTER TABLE MyTable
2 ALTER COLUMN MyColumn NVARCHAR(100) COLLATE Chinese_PRC_CI_AS;

3. 查询时临时指定排序规则

在查询中,可以为特定列临时指定排序规则:

1 SELECT MyColumn COLLATE Chinese_PRC_CI_AS
2 FROM MyTable
3 WHERE MyColumn COLLATE Chinese_PRC_CI_AS = 'SomeValue';

4. 比较时指定排序规则

在比较两个字符串时,可以为其中之一或两者指定排序规则,以避免排序规则冲突:

SELECT *
FROM MyTable
WHERE MyColumn COLLATE Chinese_PRC_CI_AS = OtherColumn COLLATE Chinese_PRC_CI_AS;

5. 联合查询(UNION)时指定排序规则

在联合查询中,如果不同的查询部分有不同的排序规则,可以为相关列指定相同的排序规则:

1 SELECT MyColumn COLLATE Chinese_PRC_CI_AS
2 FROM MyTable1
3 UNION
4 SELECT MyColumn COLLATE Chinese_PRC_CI_AS
5 FROM MyTable2;

6. 定义数据库的默认排序规则

在创建数据库时,可以指定默认排序规则:

1 CREATE DATABASE MyDatabase
2 COLLATE Chinese_PRC_CI_AS;

7. 定义变量的排序规则

可以在声明字符串变量时指定排序规则:

1 DECLARE @MyVariable NVARCHAR(100) COLLATE Chinese_PRC_CI_AS;
2 SET @MyVariable = 'SomeValue';

常见的排序规则
排序规则通常由以下几个部分组成:
1区域设置(Locale):例如 Chinese_PRC。
2敏感性(Sensitivity):
○CI(Case Insensitive):不区分大小写。
○CS(Case Sensitive):区分大小写。
○AI(Accent Insensitive):不区分重音符号。
○AS(Accent Sensitive):区分重音符号。
○KS(Kana Sensitive):区分平假名和片假名。
○WS(Width Sensitive):区分全角和半角字符。
○BIN(Binary):二进制排序。
例如,Chinese_PRC_CI_AS 表示中国简体中文、不区分大小写但区分重音符号的排序规则。
通过 COLLATE 关键字,您可以在 SQL Server 中灵活地控制字符串比较和排序的行为,以满足不同应用场景的需求。