SQL排序规则
- 格式:docx
- 大小:24.07 KB
- 文档页数:13
sql 字母排序规则
SQL的字母排序规则通常基于默认的排序规则,这取决于数据库管理系统(DBMS)的实现。
大多数DBMS使用ASCII码值进行排序,这意味着小写字母的ASCII码值比大写字母的ASCII码值小,因此小写字母会排在大写字母之前。
例如,在SQL中执行以下查询:
```sql
SELECT FROM table_name ORDER BY column_name;
```
如果没有指定排序规则,则结果将按照字母顺序(升序)返回,其中小写字母排在大写字母之前。
如果需要按照特定的排序规则进行排序,可以使用ORDER BY子句并指定相应的排序规则。
例如,可以使用COLLATE子句来指定一个特定的排序规则。
以下是一个示例:
```sql
SELECT FROM table_name ORDER BY column_name COLLATE
Latin1_General_BIN;
```
上述查询将按照二进制排序规则对结果进行排序。
还有其他可用的排序规则,具体取决于DBMS和所使用的字符集。
需要注意的是,不同的DBMS可能具有不同的默认排序规则和可用的排序
规则。
因此,最好查阅特定DBMS的文档以了解其排序规则的详细信息。
sqlserver十进制排序规则# SQL Server十进制排序规则在SQL Server数据库中,排序规则是用来定义字符数据类型(如varchar、char、nchar和nvarchar)的排序顺序的规则。
SQL Server提供了不同的排序规则,以满足不同语言和地区的排序要求。
## 十进制排序规则在SQL Server中,对于十进制数的排序,可以使用以下两种排序规则:1. SQL_Latin1_General_CP1_CI_AS:这是SQL Server的默认排序规则。
它是不区分大小写、不区分重音符号、并且按照字符的编码值进行排序的排序规则。
例如,它将数字1、2、3等按照其编码值进行排序。
2. Latin1_General_BIN:这是一种区分大小写、区分重音符号、并且按照字符的二进制值进行排序的排序规则。
在使用这个排序规则时,数字也会按照其二进制值进行排序。
## 示例下面是一个使用SQL Server十进制排序规则进行排序的示例:假设有如下的数据表`Numbers`,包含了一列`Value`:```CREATE TABLE Numbers (Value VARCHAR(10));INSERT INTO Numbers (Value)VALUES ('1'), ('10'), ('2'), ('20'), ('3');```使用默认的排序规则`SQL_Latin1_General_CP1_CI_AS`进行排序:```SELECT ValueFROM NumbersORDER BY Value;```输出结果为:```1231020```使用排序规则`Latin1_General_BIN`进行排序:```SELECT ValueFROM NumbersORDER BY Value COLLATE Latin1_General_BIN;```输出结果为:```1102203```## 总结SQL Server提供了不同的排序规则,以满足不同语言和地区的需求。
mysql 与sql server 排序规则-回复【mysql与sql server排序规则】在数据库管理系统中,排序规则(Collation)是指用于确定字符串比较和排序顺序的一组规则。
不同的数据库管理系统具有不同的排序规则,包括MySQL和SQL Server。
一、MySQL排序规则MySQL的排序规则是通过Collation(字符集校对)来定义的。
Collation 定义了字符的比较和排序规则,包括不区分大小写、区分大小写、按字母顺序排序等。
MySQL支持多种字符集和排序规则,用户可以根据自己的需要选择合适的排序规则。
1.1. 字符集和排序规则MySQL支持多种字符集和排序规则,常用的字符集包括utf8、latin1、gbk等。
每种字符集对应多种排序规则,比如utf8字符集对应的排序规则包括utf8_general_ci(不区分大小写)、utf8_bin(区分大小写)等。
1.2. 排序规则的影响排序规则会影响字符串的比较和排序结果。
比如在utf8_general_ci排序规则中,大写字母和小写字母被认为是相等的,所以对于字符串比较来说,'A'和'a'是相等的;而在utf8_bin排序规则中,大小写字母是不相等的。
1.3. 设置排序规则在MySQL中,可以在数据库、表和列级别上设置排序规则。
在创建数据库或表时,可以通过指定COLLATE子句来设置排序规则。
比如创建一个按照utf8_general_ci排序规则的表:CREATE TABLE mytable (id INT,name VARCHAR(100)) COLLATE utf8_general_ci;在列级别上,可以使用ALTER TABLE语句修改列的排序规则。
比如将name列的排序规则修改为utf8_general_ci:ALTER TABLE mytable MODIFY COLUMN name VARCHAR(100) COLLATE utf8_general_ci;1.4. 默认排序规则如果没有指定排序规则,默认情况下MySQL使用服务器的默认字符集和排序规则。
sql分组排序语法
在SQL中,你可以使用GROUP BY和ORDER BY子句来进行分组和排序。
1.GROUP BY:这个子句用于根据一个或多个列对结果集进行分组。
通常与聚合函数
(如SUM(), COUNT(), AVG()等)一起使用。
示例:
sql
SELECT column1, column2, SUM(column3)
FROM your_table
GROUP BY column1, column2;
2.ORDER BY:这个子句用于对结果集进行排序。
你可以根据一个或多个列进行排序,
并可以选择升序(默认)或降序。
示例:
sql
SELECT column1, column2, SUM(column3)
FROM your_table
GROUP BY column1, column2
ORDER BY column1 ASC, column2 DESC;
当你想先分组,然后在每个分组内排序时,你可以这样组合使用:
sql
SELECT column1, column2, SUM(column3) as total
FROM your_table
GROUP BY column1, column2
ORDER BY total DESC;
这里,我们首先按column1和column2进行分组,然后在每个分组内按total(即SUM(column3)的结果)降序排序。
sql server数据库排序规则SQL Server数据库排序规则决定了表中字符串数据类型的排序方式。
排序规则包括排序规则名称、排序规则ID、语言ID、排序规则说明和排序规则选项等。
在SQL Server中,有多种不同的排序规则。
这些排序规则包括二进制排序、区分大小写排序、不区分大小写排序、以及Unicode排序规则等。
这些排序规则在排序非Unicode字符时会有很大的影响。
二进制排序规则对于所有字符按照其ASCII码排序。
这意味着数字和特殊字符排在字母之前。
对于包含大量数字和符号的数据,此排序规则可能是一个不错的选择。
区分大小写排序规则对于在排序时区分大小写的字符排序,例如在将'A'和'a'排序时,小写字母'a'将排在大写字母'A'之前。
不区分大小写排序规则则在排序时将忽略大小写,例如在将'A'和'a'排序时,'A'和'a'将被视为相同的字符并排在一起。
Unicode排序规则则是专门为排序Unicode字符所设计的。
Unicode 字符集包括世界上几乎所有的字符,包括特殊符号和汉字等。
排序Unicode字符时,必须使用Unicode排序规则才能确保正确的排序。
除了以上列举的排序规则,SQL Server中还包括多语言排序规则和专用排序规则等,用于在特定语言环境中排序。
当创建表时,可以指定使用哪种排序规则来排序字符串类型的列。
如果未指定排序规则,则将使用数据库的默认排序规则。
使用正确的排序规则可以确保数据正确排序,高效查询,并且能够提高应用程序的性能。
总之,SQL Server数据库排序规则是个非常重要的概念,对于保证数据的正确性、查询性能的提升都有着重要的意义。
开发人员需要根据实际情况进行选择,并根据需要实现自定义排序规则,以满足特定的业务需求。
sql server nvarchar排序规则
在SQL Server 中,nvarchar是一个用于存储Unicode 字符的数据类型。
当你
对nvarchar类型的列进行排序时,默认的排序规则是基于Unicode 码点的。
这意味着排序是基于字符的Unicode 值进行的。
例如,考虑以下的一些Unicode 码点:
•'A' 的码点是U+0041
•'B' 的码点是U+0042
•'é'(带有重音符号的e)的码点是U+00E9
基于Unicode 码点的排序规则将按照以下顺序对这些字符进行排序:
1.'A'
2.'B'
3.'é'
如果你想使用不同的排序规则,例如使用特定的语言或地区的规则,你可以使
用COLLATE子句来指定一个不同的排序规则。
例如,你可以使用COLLATE
French_CI_AS来按照法国的规则对字符串进行不区分大小写的排序。
要注意的是,当你使用COLLATE子句时,应该确保你的数据库支持你选择的排序规则。
你可以使用collations目录视图来查看数据库支持的所有排序规则。
最后,如果你对非Unicode 的varchar列进行排序,默认的排序规则是基于字符的ASCII 值。
sql 批量修改排序规则
批量修改排序规则是一个常见的需求,在SQL中可以通过UPDATE语句来实现。
首先,我们需要确定要修改排序规则的表和字段,然后使用UPDATE语句来批量更新这些字段的值。
假设我们有一个名为`products`的表,其中有一个名为`price`的字段,我们想要将`price`字段的排序规则从升序改为降序。
我们可以使用如下的SQL语句来实现这一批量修改排序规则的操作:
sql.
UPDATE products.
SET price = -price.
这条SQL语句将`price`字段的值取反,从而实现了将原来的升序排序规则改为了降序排序规则。
这样,我们就完成了批量修改排序规则的操作。
另外,如果需要批量修改多个字段的排序规则,我们可以使用
类似的UPDATE语句来逐一修改每个字段的排序规则。
在实际操作中,我们需要仔细考虑每个字段的数据类型和业务逻辑,确保修改排序
规则不会导致数据混乱或错误。
需要注意的是,在进行任何批量修改操作时,都应该先备份数据,以防意外发生。
此外,修改排序规则可能会影响到已有的查询
和业务逻辑,因此在进行此类操作时应该谨慎,并在非生产环境中
进行测试。
总之,通过使用UPDATE语句,我们可以在SQL中实现批量修改
排序规则的操作。
在进行此类操作时,需要仔细考虑每个字段的数
据类型和业务逻辑,并在操作前做好数据备份和测试工作。
排序sql语句
排序是SQL中经常用到的操作,它可以将查询结果按照指定的字段进行排序。
在SQL中,排序可以通过ORDER BY关键字来实现。
ORDER BY可以用于单个字段或多个字段的排序。
如果需要按照多个字段排序,则可以在ORDER BY子句中使用多个字段名,并以逗号分隔。
例如,下面的SQL语句将按照销售量从高到低的顺序对产品进行排序:
SELECT * FROM products
ORDER BY sales DESC;
在上面的例子中,我们使用了DESC关键字,它表示按照降序排序。
如果需要按照多个字段进行排序,则可以在ORDER BY子句中使
用多个字段名,并以逗号分隔。
例如,下面的SQL语句将按照销售量从高到低以及产品名称从A到Z的顺序对产品进行排序:
SELECT * FROM products
ORDER BY sales DESC, name ASC;
在上面的例子中,我们使用了ASC关键字,它表示按照升序排序。
除了使用字段名进行排序外,还可以使用表达式和函数进行排序。
例如,下面的SQL语句将按照产品名称的长度进行排序:
SELECT * FROM products
ORDER BY LENGTH(name);
在上面的例子中,我们使用了LENGTH函数来获取产品名称的长
度,并将其作为排序的依据。
排序在SQL中非常常见,它能够帮助我们快速地获取需要的数据,并以我们需要的方式进行展示。
熟练掌握排序操作是SQL学习的重要一步。
sqlserver十进制排序规则摘要:1.SQL Server 简介2.十进制排序规则的概念3.SQL Server 中的十进制排序规则4.如何使用十进制排序规则5.总结正文:1.SQL Server 简介SQL Server 是由微软公司开发的一款关系型数据库管理系统,广泛应用于企业级数据存储和管理。
SQL Server 提供了丰富的功能和高效的性能,使得它在企业级应用场景中具有很高的市场份额。
2.十进制排序规则的概念十进制排序规则是指在数据库中,按照数字的十进制顺序对数据进行排序。
这种排序方式通常用于对数字类型的数据进行排序,例如:整数、小数等。
3.SQL Server 中的十进制排序规则在SQL Server 中,可以使用SELECT 语句结合ORDER BY 子句来实现十进制排序。
ORDER BY 子句用于对查询结果按照指定的列进行排序,默认情况下,会按照列的升序顺序进行排序。
如果需要按照十进制降序顺序进行排序,可以使用DESC 关键字。
例如,假设有一个名为“employees”的表,包含以下列:id(整数类型)、name(字符串类型)、salary(小数类型)。
可以使用以下SQL 语句对员工的薪水按照十进制降序顺序进行排序:```sqlSELECT * FROM employeesORDER BY salary DESC;```4.如何使用十进制排序规则在SQL Server 中,要使用十进制排序规则,需要结合ORDER BY 子句和适当的排序方向(ASC 表示升序,DESC 表示降序)。
以下是一个简单的示例:```sqlSELECT * FROM employeesORDER BY id ASC, salary DESC;```上述SQL 语句表示:首先按照员工的id 列升序排序,然后按照薪水列降序排序。
5.总结在SQL Server 中,可以使用十进制排序规则对数字类型的数据进行排序。
SQL Server中SQL转排序规则的完全指南一、引言在数据库管理系统中,排序规则(collation)决定了如何对字符进行排序和比较。
SQL Server作为一种广泛使用的关系型数据库管理系统,提供了多种语言的排序规则,包括英语、法语、德语等。
然而,有时候,我们可能需要将一种排序规则转换为另一种排序规则。
本文将详细介绍如何在SQL Server中进行SQL转排序规则的操作。
二、理解排序规则在深入讨论之前,我们先来理解一下什么是排序规则。
简单来说,排序规则是一种规则,它定义了如何在数据库中对字符进行排序和比较。
例如,有些语言中,大写字母在小写字母之前,而在其他一些语言中,小写字母在大写字母之前。
这就是由排序规则决定的。
三、为什么要转换排序规则有时,我们可能需要将一种排序规则转换为另一种排序规则。
这可能是因为我们需要按照不同的语言或地区标准对数据进行排序,或者因为我们需要在应用程序中使用不同的排序规则。
无论原因如何,SQL Server都提供了几种方法来实现这一目标。
四、如何在SQL Server中转换排序规则1. 使用ALTER TABLE语句:我们可以使用ALTER TABLE语句来修改表的排序规则。
以下是一个示例:ALTER TABLE table_nameALTER COLUMN column_name NVARCHAR(100) COLLATE new_collation;在这个示例中,table_name是你想要修改的表的名称,column_name是你想要修改的列的名称,new_collation是你想要使用的新的排序规则。
2. 使用sp_help_collations系统存储过程:sp_help_collations系统存储过程可以返回一个结果集,其中包含了所有可用的排序规则及其相关信息。
以下是一个示例:EXEC sp_help_collations;这个查询将返回一个结果集,其中包含了所有的排序规则及其相关信息,如名称、是否支持二进制排序、是否区分大小写等。
sql server建表的排序规则SQL Server是一种关系型数据库系统,它具有一套比较严谨的建表规则,其中排序规则是非常重要的一项。
排序规则主要用于规定数据库中字符串的排序方式,例如如何对汉字、英文字母、数字等进行排序,这在数据库中是非常重要的,可以影响到数据查询和数据分析等方面。
本文将详细介绍SQL Server建表的排序规则。
一、排序规则简介排序规则是SQL Server用于对字符数据进行排序的一种规则。
在SQL Server中,字符数据默认按照字典序进行排序,即按照字符的ASCII码值进行排序,例如'A'的ASCII码为65,'a'的ASCII码为97,所以'A'会排在'a'的前面。
但在实际应用中,我们经常需要根据语言的语法规则进行排序,例如中文的拼音排序、法语的重音符号排序等。
为此,SQL Server提供了多种排序规则,以支持不同语言和国家的排序需求。
排序规则定义了一套标准的字符顺序规则,以保证字符数据在比较时能够按照正确的顺序进行排序。
每个排序规则都由一个唯一的名称来标识,例如Chinese_PRC_CI_AS、Latin1_General_CI_AS 等。
在SQL Server中,排序规则主要包括以下几种:1.二进制排序规则:不区分大小写,也不区分字符编码。
2.CI(Case Insensitive)规则:不区分大小写,但区分字符编码。
3.CS (Case Sensitive)规则:区分大小写,也区分字符编码。
二、排序规则的影响SQL Server的排序规则主要影响以下两个方面的功能:1.查询功能:当我们执行查询语句时,需要按照一定的排序规则来排序数据。
如果我们没有指定排序规则,则默认按照服务器上的默认排序规则进行排序。
如果数据的排序规则与查询语句的排序规则不一致,可能导致查询结果不准确。
2.索引功能:索引是用来提高查询效率的重要手段。
oracle和mysql的排序规则
Oracle和MySQL都是流行的关系型数据库管理系统,它们都支持排序操作。
然而,它们的排序规则有所不同,这可能导致在处理相同数据时产生不同的结果。
以下是Oracle和MySQL的排序规则:
1. Oracle的排序规则:
- 默认情况下,Oracle使用自然排序规则,即按照字符串的自然顺序进行排序。
例如,数字和字母的顺序是按照ASCII码表的顺序排列的。
- Oracle还支持自定义排序规则,可以通过`NLSSORT`参数来指定。
例如,可以使用`ALTER SESSION SET NLS_SORT = 'BINARY_AI'`来指定二进制AI排序规则。
2. MySQL的排序规则:
- MySQL默认使用字典排序规则,即按照字符的Unicode 编码顺序进行排序。
例如,数字和字母的顺序是按照Unicode码表的顺序排列的。
- MySQL还支持自定义排序规则,可以通过`collation`子句来指定。
例如,可以使用`SELECT * FROM table_name COLLATE utf8_bin`来指定使用utf8_bin排序规则。
总结一下,Oracle和MySQL的排序规则主要区别在于它们使用的排序算法和排序方式。
Oracle默认使用自然排序规则,而MySQL默认使用字典排序规则。
此外,Oracle还支持自定义排序规则,而MySQL则不支持。
在使用这两种数据库时,需要注意这些差异,以确保正确地对数据进行排序。
sql的order by的排序规则
1.升序排序(ASC):默认情况下,Order By语句会按照升序排序。
例如,如果有一个数字列,那么Order By语句会从最小值到最大值对结果进行排序。
2. 降序排序(DESC):如果需要按照降序排序,可以在Order By 语句后添加DESC关键字。
例如,如果有一个数字列,那么Order By 语句会从最大值到最小值对结果进行排序。
3. 多列排序:如果需要对多个列进行排序,可以在Order By语句后添加多个列名。
例如,如果需要按照数字列升序排序,然后按照字母列降序排序,可以使用以下语句:Order By 数字列 ASC, 字母列 DESC。
4. Null值排序:对于包含Null值的列,可以使用NULLS FIRST 或NULLS LAST指定排序规则。
例如,如果需要将Null值排在最前面,可以使用以下语句:Order By 列名 NULLS FIRST。
以上就是SQL的Order By排序规则的详细介绍。
在实际应用中,可以根据具体需求选择不同的排序方式。
- 1 -。
sql 查看排序规则排序规则是在SQL语句中用来指定查询结果的排序方式。
通过排序规则,可以按照指定的列或表达式对查询结果进行排序,以便更好地展示和分析数据。
在SQL中,我们可以使用ORDER BY子句来指定排序规则。
ORDER BY子句通常紧跟在SELECT语句的末尾,用于对查询结果进行排序。
ORDER BY子句可以指定一个或多个列作为排序的依据,并可以通过ASC或DESC关键字来指定升序或降序排列。
下面是一些常见的排序规则的示例:1.按照单个列进行排序:```SELECT * FROM employeesORDER BY last_name ASC;```上述示例中,我们按照员工的姓氏(last_name)进行升序排序。
2.按照多个列进行排序:```SELECT * FROM employeesORDER BY last_name ASC, first_name ASC;```上述示例中,我们按照员工的姓氏(last_name)进行升序排序,如果姓氏相同,则按照名字(first_name)进行升序排序。
3.按照表达式进行排序:```SELECT * FROM employeesORDER BY (salary * bonus) DESC;```上述示例中,我们按照员工的薪水(salary)乘以奖金(bonus)的结果进行降序排序。
4.按照列的长度进行排序:```SELECT * FROM employeesORDER BY LENGTH(first_name) ASC;```上述示例中,我们按照员工名字(first_name)的长度进行升序排序。
5.按照NULL值进行排序:```SELECT * FROM employeesORDER BY start_date DESC NULLS LAST;```上述示例中,我们按照员工的入职日期(start_date)进行降序排序,同时将NULL值放在最后。
pgsql 排序规则
PostgreSQL排序规则指的是在排序操作中,PostgreSQL 使用哪些规则来确定数据的排列顺序。
这些规则包括默认的排序规则和自定义的排序规则。
默认的排序规则是根据字符集进行排序的,也就是说,按照字母表顺序对字符进行排序。
不同字符集的排序规则可能不同,因此在使用不同字符集的数据库中进行排序时需要注意。
除了默认的排序规则,PostgreSQL 还支持自定义的排序规则。
这些自定义规则可以基于不同的排序算法和方法,例如基于语言、大小写敏感性等等。
用户可以通过定义自己的排序规则来满足特定的排序需求。
在 PostgreSQL 中,排序规则可以通过 CREATE COLLATION 命令来定义。
这个命令允许用户指定排序规则的名称、关联的字符集、排序算法等等参数。
用户可以在查询语句中使用这些自定义的排序规则,以满足特定的排序需求。
在使用自定义的排序规则时,需要注意排序的性能问题。
由于自定义排序规则可能会涉及到复杂的算法和方法,因此会对排序操作的性能产生一定的影响。
因此,用户需要根据实际情况选择合适的排序规则,并优化查询语句,以提高排序的效率。
- 1 -。
sql 排序语法
SQL排序语法是SQL语句中用于对结果集进行排序的一种语法。
SQL排序语法可以帮助用户将结果集按指定的顺序进行排序,从而更方便地进行数据查询和分析。
在SQL排序语法中,用户可以使用ORDER BY子句进行排序。
ORDER BY子句后跟一个或多个列名,这些列名用逗号分隔。
在ORDER BY子句中,用户可以指定升序或降序。
默认情况下,ORDER BY子句按升序排列。
如果想要按降序排列,可以使用DESC关键字。
SQL排序语法的常用语句如下:
SELECT * FROM table_name ORDER BY column_name ASC/DESC;
例如,要按照员工年龄从小到大的顺序对员工信息进行排序,可以使用以下SQL语句:
SELECT * FROM employee_table ORDER BY age ASC;
以上语句将返回按照年龄从小到大排序后的员工信息。
SQL排序语法可以帮助用户更方便地对数据进行查询和分析,是SQL语言中不可或缺的一部分。
- 1 -。
sqlserver contains 排序规则
SQL Server中的CONTAINS函数是一个全文搜索函数,主要用于在包含全文索引的列中搜索特定的“词汇”或“词组”。
但是CONTAINS 函数本身并不可以直接用于排序。
排序规则(Collation)主要影响数据的比较、排序和存储方式,尤其是对于字符数据。
在使用CONTAINS进行全文搜索时,排序规则的影响因素如下:
具体样例如下:
通过创建全文索引,指定语言为“English”。
从而设置列的排序规则与其相匹配,以确保全文索引能够正确的解析和处理。
在之后的
CONTAINS查询中,它会根据这个语言设置来搜索包含“example”这个词的记录。
所有CONTAINS函数直不可直接用于排序规则,但在处理全文搜索时,需要确保排序规则与全文索引的语言设置相匹配,以获得准确和预期的搜索结果。
2。
一、排序规则简介:什么叫排序规则呢?MS是这样描述的:"在Microsoft SQL Server 中,字符串的物理存储由排序规则控制。
排序规则指定表示每个字符的位模式以及存储和比较字符所使用的规则。
"在查询分析器内执行下面语句,可以得到SQL SERVER支持的所有排序规则。
select * from ::fn_helpcollations()排序规则名称由两部份构成,前半部份是指本排序规则所支持的字符集。
如:Chinese_PRC_CS_AI_WS前半部份:指UNICODE字符集,Chinese_PRC_指针对大陆简体字UNICODE的排序规则,按拼音排序。
Chinese_PRC_Stroke 表示按汉字笔画排序;排序规则的后半部份即后缀含义:_BIN 二进制排序_CI(CS) 是否区分大小写,CI不区分,CS区分(case-insensitive/case-sensitive)_AI(AS) 是否区分重音,AI不区分,AS区分(accent-insensitive/accent-sensitive)_KI(KS) 是否区分假名类型,KI不区分,KS区分(kanatype-insensitive/kanatype-sensitive) _WI(WS) 是否区分宽度WI不区分,WS区分(width-insensitive/width-sensitive)区分大小写:如果想让比较将大写字母和小写字母视为不等,请选择该选项。
区分重音:如果想让比较将重音和非重音字母视为不等,请选择该选项。
如果选择该选项,比较还将重音不同的字母视为不等。
区分假名:如果想让比较将片假名和平假名日语音节视为不等,请选择该选项。
区分宽度:如果想让比较将半角字符和全角字符视为不等,请选择该选项。
二、排序规则选择:如果SQL Server 实例的所有用户都使用同一种语言,则应选取支持该语言的排序规则。
例如,如果所有用户都讲法语,则选择法语排序规则。
如果您的SQL Server 实例的用户讲多种语言,则应选择能最好地满足各种语言需要的排序规则。
例如,如果用户一般都讲西欧语言,则选择Latin1_General 排序规则。
如果要支持讲多种语言的用户,则对于所有字符数据使用Unicode 数据类型nchar、nvarchar 和nvarchar(max) 是非常重要的。
Unicode 可避免非Unicode 的char、varchar 和text 数据类型带来的代码页转换难题。
因为排序规则定义用于比较操作的排序次序和Unicode 字符的排序,所以当用Unicode 数据类型实现所有列时,排序规则仍会产生不同。
即使使用Unicode 数据类型存储字符数据时,也应选择支持大多数用户的排序规则,以防使用非Unicode 数据类型实现列或变量。
SQL Server 只支持由基础操作系统支持的代码页。
在执行取决于排序规则的操作时,引用的对象所使用的SQL Server 排序规则必须使用计算机上运行的操作系统所支持的代码页。
如果指定的排序规则(或引用的对象所使用的排序规则)使用Windows 操作系统不支持的代码页,则SQL Server 将发出错误。
对此错误的响应取决于计算机上安装的Windows 操作系统的版本。
Windows 2000 及更新版本支持由SQL Server 排序规则使用的所有代码页。
因此,不会出现该错误消息。
三、排序规则的语法:Windows 排序规则名称由排序规则指示器和比较风格构成。
语法< Windows_collation_name > :: =CollationDesignator_<ComparisonStyle>< ComparisonStyle > ::=CaseSensitivity_AccentSensitivity[_KanatypeSensitive [_WidthSensitive ] ]| _BIN参数CollationDesignator指定Windows 排序规则使用的基本排序规则。
基本排序规则包括:当指定按字典排序时应用其排序规则的字母表或语言用于存储非Unicode 字符数据的代码页。
例如Latin1_General 或法文,两者都使用代码页1252,或土耳其文,它使用代码页1254。
CaseSensitivityCI 指定不区分大小写,CS 指定区分大小写。
AccentSensitivityAI 指定不区分重音,AS 指定区分重音。
KanatypeSensitiveOmitted 指定不区分大小写,KS 指定区分假名类型。
WidthSensitivityOmitted 指定不区分大小写,WS 指定区分大小写。
BIN指定使用二进制排序次序。
注释Microsoft® SQL Server™2000 Windows 排序规则的指示器为:SQL Server 2000 排序规则指示器用于非Unicode 数据的代码页支持的Windows 区域设置Albanian 1250 阿尔巴尼亚语Arabic 1256 阿拉伯语(阿尔及利亚)、阿拉伯语(巴林)、阿拉伯语(埃及)、阿拉伯语(伊朗)、阿拉伯语(约旦)、阿拉伯语(科威特)、阿拉伯语(黎巴嫩)、阿拉伯语(利比亚)、阿拉伯语(摩洛哥)、阿拉伯语(阿曼)、阿拉伯语(卡塔尔)、阿拉伯语(沙特阿拉伯)、阿拉伯语(叙利亚)、阿拉伯语(突尼斯)、阿拉伯语(阿拉伯联合酋长国)、阿拉伯语(也门)、波斯语、乌尔都语Chinese_PRC 936 中文(香港特别行政区),中文(中华人民共和国),中文(新加坡)Chinese_PRC_Stroke 936 按汉字笔画排序(中华人民共和国)Chinese_Taiwan_Bopomofo 950 按汉语拼音排序(台湾)Chinese_Taiwan_Stroke 950 繁体中文(台湾)Croatian 1250 克罗地亚语Cyrillic_General 1251 保加利亚语、白俄罗斯语、俄罗斯语、塞尔维亚语Czech 1250 捷克语Danish_Norwegian 1252 丹麦语、挪威语(Bokmål)、挪威语(Nyorsk)Estonian 1257 爱沙尼亚语Finnish_Swedish 1252 芬兰语、瑞典语French 1252 法语(比利时)、法语(加拿大)、法语(卢森堡)、法语(标准)、法语(瑞士)Georgian_Modern_Sort 1252 按现代格鲁吉亚语排序German_PhoneBook 1252 按德语电话号码簿排序Greek 1253 希腊语Hebrew 1255 希伯来语Hindi 只用于Unicode 数据类型北印度语Hungarian 1250 匈牙利语Hungarian_Technical 1250Icelandic 1252 冰岛语Japanese 932 日语Japanese_Unicode 932Korean_Wansung 949 朝鲜语Korean_Wansung_Unicode 949Latin1_General 1252 南非荷兰语、巴斯克语、加泰罗尼亚语、荷兰语(比利时)、荷兰语(标准)、英语(澳大利亚)、英语(不列颠)、英语(加拿大)、英语(加勒比)、英语(爱尔兰)、英语(牙买加)、英语(新西兰)、英语(南非)、英语(美国)、法罗语、德语(奥地利)、德语(列支敦士登)、德语(卢森堡)、德语(标准)、德语(瑞士)、印度尼西亚语、意大利语、意大利语(瑞士)、葡萄牙语(巴西)、葡萄牙语(标准)Latvian 1257 拉脱维亚语Lithuanian 1257 立陶宛语Lithuanian_Classic 1257Macedonian 1251 马其顿语Mexican_Trad_Spanish 1252 西班牙语(墨西哥)、西班牙语(传统排序)Modern_Spanish 1252 西班牙语(阿根廷)、西班牙语(玻利维亚)、西班牙语(智利)、西班牙语(哥伦比亚)、西班牙语(哥斯达黎加)、西班牙语(多米尼加共和国)、西班牙语(厄瓜多尔)、西班牙语(危地马拉)、西班牙语(现代排序)、西班牙语(巴拿马)、西班牙语(巴拉圭)、西班牙语(秘鲁)、西班牙语(乌拉圭)、西班牙语(委内瑞拉)Polish 1250 波兰语Romanian 1250 罗马尼亚语Slovak 1250 斯洛伐克语Slovenian 1250 斯洛文尼亚语Thai 874 泰国语Turkish 1254 土耳其语Ukrainian 1251 乌克兰语Vietnamese 1258 越南语示例下面是Windows 排序规则名称的一些示例:Latin1_General_CI_AS排序规则使用Latin1 General 字典排序规则,代码页为1252。
不区分大小写但区分重音。
Estonian_CS_AS排序规则使用爱沙尼亚字典排序规则,代码页为1257。
区分大小写并区分重音。
Latin1_General_BIN排序规则使用代码页1252 和二进制排序规则。
忽略Latin1 General 字典排序规则。
四、修改、查看排序规则:------修改列的排序规则ALTER TABLE tbALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CI_AS------修改数据库的排序规则ALTER DATABASE databaseCOLLATE Chinese_PRC_CS_AS------查看某个表的排序规则select collation from syscolumnswhere id=object_id(N'yourtablename')五、排序规则应用:SQL SERVER提供了大量的WINDOWS和SQLSERVER专用的排序规则,但它的应用往往被开发人员所忽略。
其实它在实践中大有用处。
例1:让表NAME列的内容按拼音排序:create table #t(id int,name varchar(20))insert #t select 1,'中'union all select 2,'国'union all select 3,'人'union all select 4,'阿'select * from #t order by name collate Chinese_PRC_CS_AS_KS_WSdrop table #t/*结果:id name----------- --------------------4 阿2 国3 人1 中*/例2:让表NAME列的内容按姓氏笔划排序:create table #t(id int,name varchar(20))insert #t select 1,'三'union all select 2,'乙'union all select 3,'二'union all select 4,'一'union all select 5,'十'select * from #t order by name collate Chinese_PRC_Stroke_CS_AS_KS_WSdrop table #t/*结果:id name----------- --------------------4 一2 乙3 二5 十1 三*/排序规则应用扩展:SQL SERVER汉字排序规则可以按拼音、笔划等排序,那么我们如何利用这种功能来处理汉字的一些难题呢?我现在举个例子:用排序规则的特性计算汉字笔划要计算汉字笔划,我们得先做准备工作,我们知道,WINDOWS多国汉字,UNICODE目前收录汉字共20902个。