SQL Server的定序(Collation)

SQLServer Collation研究 在解PC-14070中,发现异常是因为表中已经有列ROUTE_KEY,但在Migration的过程中又添加列route_key报错(客户用的是SQLServer): Migrationto 9.1 fails "Column name 'ROUTE_KEY' in table 'DC_cs_AfterRework' isspecified more than once. 由此我我猜想客户的数据 阅读详情

使用SQL Server的朋友們應該都知道SQL Server的資料庫有一個設定叫做定序(Collation),今天我們就來看看定序這東西是什麼,首先我們看一下Wiki上對定序的說明:

Collation is the assembly of written information into a standard order. One common type of collation is called alphabetisation, though collation is not limited to ordering letters of the alphabet. Collating lists of words or names into alphabetical order is the basis of most office filing systems, library catalogs and reference books..[Reference from here.]

這段話講得玄了點,我們看另一個比較易懂的說明:

Collation refers to a set of rules that determine how data is sorted and compared. Character data is sorted using rules that define the correct character sequence, with options for specifying case-sensitivity, accent marks, kana character types and character width.[Reference from here.]

這段話就簡潔多了,簡單來說定序指的就是決定資料被排序與比對的規則,而比對的規則一般可粗分為幾大類:

定序的分類
  • Case sensitivity(CS)
    簡單來說就是區分大小寫,A跟a是不同的,如果是Case Insensitive(CI)的話A在排序或者查詢時就會被視為相同,也就是查詢A,連同a也會被查詢到。
  • Accent sensitivity(AS)
    代表的是腔調上的差別,a跟á、o跟ó在腔調上是相同的,那查詢時是要視為相同,如果是的話,那就是Accent Insensitive(AI),如果不是的話就視為Accent sensitive。
  • Kana Sensitivity(KS)
    日文中的片假名(Hiragana)與平假名(Katakana)如果被視為相同,那就是Kana Insensitive(KI),反之就是Kane sensitive.。
  • Width sensitivity(WS)
    當半形字與全型自被視為相同(A跟A),那就是Width Insensitive(WI),反之就是Width sensitive。

一般當我們在創建資料庫時,我們會看到好多選項:

image

SQL Server 2005支援的定序就有上百種了,而後頭的BIN、CA、AI、KS、WS等等就是上頭我們提到的那些Sensitive或Insensitive了,我們看一下MSDN上更詳細的說明:

image

其中的BIN跟BIN2是我們前面沒提到的,這兩個定序是比較特別的,與前方提到的各種Sensitive或者Insensitive的定序是有所差異的,這種定序的執行效率比其它定序來的好,針對非unicode的資料,它是自動以ANSI Code來做為排序與比較的依據(CI、AI、KI、WI),而針對unicode資料,它則是以Unicode做為排序與比較的依據,而一旦以Unicode作為排序依據,Latin_1_General_BIN跟Japanese_BIN這兩種定序查詢回來的資料將會一模一樣,因為當資料都是非unicode時,都以ANSI Code來處理;當資料都是unicode時,就以Unicode來處理,而也因為以上特性,目前大部分的系統也習慣將資料庫的定序設定為BIN結尾的。

以下是一些我們常見到的定序結尾,C、A、K、S類的定序是可以複合被使用的,但只有BIN類的是無法結合C、A、K、S的定序被使用,這也是因為上一段中提到的BIN類定序是ANSI或Unicode來做排序與比較的原則而來。

image

定序的層級

我們在SQL Server中可以在以下四個定序設定等級,我們分別可以透過SSMS或SQL Expression在伺服器、資料庫、Table的欄位上指定定序:

  • Server
    安裝時,SQL Server會要求你指定所想要的預設定序,而系統資料庫與後續新建的資料庫都會以這個定序為預設值,若後續要修改可以參考(因為要re-install原諒我無法測試):
    Setting and Changing the Server Collation
  • Database
    針對某個特定資料庫設定其定序,除了使用SSMS的介面變更外,也可以透過Alter Database指令來變更:
    ALTER DATABASE
  • Column
    針對某個欄位設定其定序,除了使用SSMS的介面變更外,也可以透過Alter Table的指令來變更:
    Setting and Changing the Column Collation
  • Expression
    這部分的定序指定是在command透過collation的關鍵字來暫時複寫掉上面三個已經設定好的定序內容,相關用法可以參考:
    COLLATE (Transact-SQL)

這些東西其實每天我們都會遭遇到,但因為目前SQL Server的相容程度與Unicode的盛行,讓我們可以免掉不少的困擾,連定序衝突的問題都不一定有機會遇到,不過上禮拜在客戶端到是遇到一次,所以就把在處理過程中查到的一些資料PO出來給大家參考參考囉。

SQL資料庫定序 協助您 解決資料大小寫 文字類型 錯誤問題 並且詳細說明定序概念 立即下载

相关推荐

Cobalt Strike4.0安装包(内附中文版)

1.什么是 Cobalt Strike Cobalt Strike 是一个为对手模拟和红队行动而设计的平台,主要用于执行有目标的攻击和模拟高级威胁 者的后渗透行动。 Cobalt Strike已经不再使用MSF而是作为单独的平台使用,它分为客户端与服务端,服务端是一个,客户端可以有多个,可被团队进行分布式协团操作。集成了端口转发、扫描多模式端口Listener、Windows exe程序生成、W...

梦之序章的博客 2万+

SQL中的Collation是个什么鬼?

一、说文解字,学习一下Collation的字面意思:排序。 (https://en.wikipedia.org/wiki/Collation) 二、SQL中的Collation,描述了如何对查询出来的数据进行比较和排序,本质是定义了两个cell的数据进行比较的时候的compare算法。 三、特别说明几个常见的SQL Collation常见的词汇: 1.  ci: case i

余璜的技术博客 1万+

相机图像质量研究(15)常见问题总结:光学结构对成像的影响--暗角

老式相机的暗角往往比较明显,周围一圈能够明显感觉到亮度下降的很多,当然有些电源模仿手持相机的摄影效果,也能看到周围明显的亮度下降。一、

xiaoshixiu的专栏 1124

sql collation

如:我要找出A表與B表中同一個人其email不一樣的記錄時報錯 select a.email,b.email from A表 a inner join B表 b on a.emp_no=b.empno where a.email <> b.email 訊息 468,層級 16,狀態 9,行 1 Cannot resol...

weixin_30435261的博客 195

MCP详解:手把手教你理解和如何使用各种开源MCP服务

MCP 作为一种开放协议,为 AI 模型与外部世界的连接提供了标准化的解决方案。它不仅降低了开发门槛,还极大地扩展了 AI 应用的边界。无论是开发者还是普通用户,都可以通过 MCP 更高效地利用 AI 技术,实现更多智能化的功能。

王哥儿聊AI的博客 6056

用R搞定生态溯源:MixSIAR贝叶斯混合模型从安装到出图的保姆级教程

本文提供了一份详细的MixSIAR贝叶斯混合模型教程,涵盖从R环境配置、数据预处理到模型参数设置和可视化分析的完整流程。通过实战案例和常见问题解决方案,帮助生态学研究者快速掌握混合模型在生态溯源中的应用,提升数据分析效率。

weixin_42531516的博客 467

修改定序 SQL SERVER

我整理的一些关于【数据库】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/f2PFnN修改定序 SQL SERVER 的完整指南 在进入 SQL Server 的世界时,了解如何修改数据库表的定序(也称为排序)是一项基本的技能。定序在数据查询中起着至关重要的作用,影响结果的排...

weixin_36225384的博客 294

别再搞混了!用示波器实测SVPWM:相电压、线电压、端电压波形到底长啥样?(附TI/ST官方笔记解读)

本文详细解析了SVPWM波形实测中的相电压、线电压和端电压的区别与测量技巧,结合TI/ST官方笔记,揭示了马鞍形波形的形成原理及常见误区。通过示波器实测案例,帮助电力电子工程师准确理解并应用这些关键概念,提升电机控制系统的调试效率。

weixin_30632883的博客 433

Collat​​e SQL命令概述

In this article, we will review the Collate SQL command. First, let us see what collation in the SQL Server is. 在本文中,我们将回顾Collat​​e SQL命令。 首先,让我们看看SQL Server中的排序规则是什么。 Collation is a set of...

culuo4781的博客 632

进芯AVP28335烧录避坑全记录:CCS、Uniflash、C2Prog、SDFlash四大工具配置详解

本文详细解析了进芯AVP28335芯片在烧录过程中遇到的常见问题及解决方案,涵盖CCS、Uniflash、C2Prog和SDFlash四大工具的配置要点。针对国产器件AVP28335的特殊需求,提供了从开发环境准备到烧录验证的全流程指南,帮助开发者高效完成程序烧录,避免常见陷阱。

weixin_30836759的博客 591

条件DDPM:Diffusion model的第三个巅峰之作

前言:DDPM从2020年诞生,短短一年的时间,模型上有两个巨大的改进,其中一个就是condition的引入,最近大部分DDPM相关的论文都会讨论这一点,有些文章称之为latent variable。和当年GAN的发展类似,CGAN和DCGAN的出现极大程度上促进了GAN的发扬光大,意义重大。本文基于前面几篇文章继续聊一聊: 从VAE到Diffusion Model_沉迷单车的追风少年-优快云博客 为什么diffusion model扩散模型可以称为score-based models?_沉迷单车的.

沉迷单车的追风少年 1万+

SQL Server 中简体繁体数据混用的问题

我现在要说的是一个在简体繁体数据混用的时候很容易发生的问题,但是这个问题也很容易被大家忽略。具体来说,这个问题会在所有采用不同排序规则的数据实例间关联数据的时候发生。也许我这么说大家还是弄不清楚到底是怎么回事儿,我先来讲一下我今天碰到的问题。我们公司因为是港资公司,所以公司里面使用的数据库会有简体中文和繁体中文两种版本。我现在这个专案使用的SQLServer是繁体中文版的,但是需要使用到另一个

陈杰的专栏 1549

1、符号回归:原理、应用与实践

本文全面介绍了符号回归(Symbolic Regression)的原理、发展历程、核心算法及其在科学与工程领域的广泛应用。文章从基本概念出发,详细阐述了基于遗传编程的符号回归机制,并探讨了其在游艇水动力学、化学过程、锂离子电池、生物医学等多个领域的实际应用。同时,博文还涵盖了高级技术如知识集成、系数优化、预测区间计算及微分方程发现等内容,对比了开源与商业软件工具,并展望了未来发展趋势,旨在为研究人员和从业者提供一本实用的符号回归指南。

ipfs8storage的博客 248

正确设置与使用SQL Server的字符集(Collation,即排序规则)

目录 目录 正确认识SQL Server的字符集 选择合适的SQL Server字符集 错误使用SQL Server的字符集 参考资料正确认识SQL Server的字符集SQL Server作为一个国际化产品,支持多语言环境。在SQL Server中,字符集被称为排序规则(即Collation)。排序规则不仅影响记录行的sort顺序,还影响中文显示是否乱码等。在SQL Server中,排序规则可在3

HyperWang的专栏 3万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

MSSQL 序列使用

--查询序列   select CAST(NEXT VALUE FOR SEQ_Test AS VARCHAR(6))   --创建序列   CREATE SEQUENCE SEQ_Test    start with 1    INCREMENT by 1   --删除序列   DROP SEQUENCE SEQ_Test

windowsliusheng的专栏 793

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

SQL定义顺序和执行顺序

SQL语句定义的顺序: (1) SELECT (2) DISTINCT<select_list> (3) FROM <left_table> (4) <join_type> JOIN <right_table> (5) ON <join_condition> (6) WHERE <where_condition> (7) GROUP BY <group_by_list> (8) WITH {CUBE

tyler880的专栏 361

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

SQL Server的 排序规则(collation)冲突和解决方案

什么是排序规则(collation)  关于SQL Server的排序规则,估计大家都不陌生,在创建数据库时我们经常要选择一种排序规则(conllation),一般我们会留意到每一种语言的排序规则都有许多种,比如标准大陆简体中文Chinese_PRC的排序规则就有数十种之多 这些排序规则有什么作用呢?让我们先来看看MS官方的解释: 排序规则指定了表示每个字符的位模式。它还指定了用...

weixin_34221112的博客 1173

SQL 按指定顺序进行排序

在有些情况下我们需要按指定顺序输出数据,比如选择了ID in(3,1,2,5,4)我们希望按这个3,1,2,5,4的顺序输出,这样只使用order by ID是无法实现的,但是我们可以使用order by charindex(','+convert(varchar,ID)+',',',3,1,2,5,4,')的方法来实现这个目的。举例如下: Create Table info( I

越努力就越主动。 3101

[SQL] SQLServer修改DB的collation, 解决排序字规则字符集问题

以前用别人备份的sqlserver的srcipt在执行创建视图操作的时候,出现了如下错误, 昨天在做另一个system的batch job的时候执行一个关联语句又出现了这个错误, 第二天总结的时候发现, 要想更改DB的排序排序集的时候,一定要依次将库 --表 -- 列 三者的Collation字符排序集都改一遍才可以。 Cannot resolve the collation conflict between "Japanese_CI_AS" and "SQL_Latin1_General_CP1_CI_

我在山城重庆,我希望能为这片软件沙漠地带贡献自己的一滴水,Stay tuned! 1万+

MYSQL中的COLLATE(COLLATION)是什么?

CREATE TABLE `table1` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `field1` text COLLATE utf8_unicode_ci NOT NULL COMMENT '字段1', `field2` varchar(128) COLLATE utf8_unicode_ci NOT NU...

weixin_44167712的博客 2万+

SQL SERVER 简体与繁体 定序 轉換

简体中文的排序规则名称是:Chinese_PRC_CI_AS, 繁体中文的排序规则名称则是:Chinese_Taiwan_Stroke_CI_AS 更改数据库定序: ALTER DATABASE DatabaseName SET SINGLE_USER WITH ROLLBACK IMMEDIATE ALTER DATABASE DatabaseName COLLATE Chinese_...

weixin_30872867的博客 535

SQL Server Collation介绍及其变更对数据的影响

Question: What is Collation? How it will affect SQL Server database, and server? Answer: 字符的存储         在将collation之前,我们首先需要知道字符是如何被存储的。在计算机中,所有数据都是用0和1这样的位来描述。一个字节有8位,因此一个字节最多可以描述256个字符。在欧...

weixin_33835103的博客 416
上一篇: 多维数组的定义和使用
下一篇: C#中按引用传递与按值传递的区别,以及ref与out关键字的使用
Zevin
博客等级 码龄17年 63粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值