1.sp_helpsort
SELECT SERVERPROPERTY ('Collation')
查看你的排序规则.
不过你的这个应该和字符集有关.
2.更改服务器排序规则
更改 SQL Server 2005 实例的默认排序规则的操作可能会比较复杂,包括以下步骤:
确保具有重新创建用户数据库及这些数据库中的所有对象所需的全部信息或脚本。
使用工具(例如大容量复制)导出所有数据。
删除所有用户数据库。
重新生成在 setup 命令的 SQLCOLLATION 属性中指定新的排序规则的 master 数据库。例如:
复制代码
start /wait setup.exe /qb INSTANCENAME=MSSQLSERVER REINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD=test SQLCOLLATION=SQL_Latin1_General_CP1_CI_AI
有关重新生成 master 数据库的详细信息,请参阅如何重新生成 SQL Server 2005 的 Master 数据库。
创建所有数据库及这些数据库中的所有对象。
导入所有数据。
注意:
可以为创建的每个新数据库指定默认排序规则,而不更改 SQL Server 2005 实例的默认排序规则。
3.设置和更改数据库排序规则
创建新数据库时,可以使用下列内容之一指定排序规则:
CREATE DATABASE 语句的 COLLATE 子句。
SQL Server Management Studio.
SQL 管理对象 (SMO) 中的 Database.Collation 属性。
如果未指定排序规则,则使用服务器排序规则。
可以使用 ALTER DATABASE 语句的 COLLATE 子句来更改在用户数据库中创建的任何新对象的排序规则。使用此语句不能更改任何现有用户定义的表中列的排序规则。使用 ALTER TABLE 的 COLLATE 子句可以更改这些列的排序规则。
更改数据库排序规则时,需要更改下列内容:
数据库的默认排序规则,这一新的默认排序规则将应用于数据库中后续创建的所有列、用户定义的数据类型、变量和参数。根据数据库中定义的对象解析 SQL 语句中指定的对象标识符时,也使用新的默认排序规则。
将系统表中的任何 char、varchar、text、nchar、nvarchar 或 ntext 列更改为使用新的排序规则。
将存储过程和用户定义函数的所有现有 char、varchar、text、nchar、nvarchar 或 ntext 参数和标量返回值更改为使用新的排序规则。
将 char、varchar、text、nchar、nvarchar 或 ntext 系统数据类型和基于这些系统数据类型的所有用户定义的数据类型更改为使用新的默认排序规则。
SQL code :
1.将数据库的字符集修改为:
alter database dbname collate Chinese_PRC_CI_AS
2.
--1. 为数据库指定排序规则
CREATE DATABASE db COLLATE Chinese_PRC_CI_AS
GO
ALTER DATABASE db COLLATE Chinese_PRC_BIN
GO
/*====================================*/
--2. 为表中的列指定排序规则
CREATE TABLE tb(
col1 varchar(10),
col2 varchar(10) COLLATE Chinese_PRC_CI_AS)
GO
ALTER TABLE tb ADD col3 varchar(10) COLLATE Chinese_PRC_BIN
GO
ALTER TABLE tb ALTER COLUMN col2 varchar(10) COLLATE Chinese_PRC_BIN
GO
/*====================================*/
--3. 为字符变量和参数应用排序规则
DECLARE @a varchar(10),@b varchar(10)
SELECT @a='a',@b='A'
--使用排序规则 Chinese_PRC_CI_AS
SELECT CASE WHEN @a COLLATE Chinese_PRC_CI_AS = @b THEN '@a=@b' ELSE '@a<>@b' END
--结果:@a=@b
--使用排序规则 Chinese_PRC_BIN
SELECT CASE WHEN @a COLLATE Chinese_PRC_BIN = @b THEN '@a=@b' ELSE '@a<>@b' END
--结果:@a<>@b
3.
表
ALTER TABLE tb
ALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CI_AS
--不区分大小写
ALTER TABLE tb
ALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CS_AS
--区分大小写
数据库
ALTER DATABASE database
COLLATE Chinese_PRC_CS_AS
--区分大小写
ALTER DATABASE database COLLATE Chinese_PRC_CI_AS --不区分大小写
方法一.安装SQL时选择区分大小写
或安装完以后重建mastar,选择区分大小
C:\Program Files\Microsoft SQL Server\80\Tools\Binn\rebuildm.exe
方法二.sql server 8.0以上的版本才可以,7.0及其以下不支持
alter database 数据库 COLLATE Chinese_PRC_CS_AS
修改排序规则,改成大小写敏感的排序规则
如果只修改一个表,用alter table语句
如果修改一个库的默认排序规则,用alter datebase语句
如果修改整个服务器的默认排序规则,用Rebuildm.exe重建master库
--指定排序规则就可以了
--示例
select replace('AbacB' collate Chinese_PRC_CS_AS_WS,'B','test')
--如果你是要求表支持,则可以建表时指定排序规则,这样replace就不用写排序规则了
--示例
create table tb(a varchar(20) collate Chinese_PRC_CS_AS_WS)
insert tb values('Abac')
select replace(a,'a','test') from tb
drop table tb
指定排序规则即可
Windows 排序规则名称
在 COLLATE 子句中指定 Windows 排序规则名称。Windows 排序规则名称由排序规则指示器和比较风格构成。
语法
< Windows_collation_name > :: =
CollationDesignator_ <ComparisonStyle>
< ComparisonStyle > ::=
CaseSensitivity_AccentSensitivity
[_KanatypeSensitive [_WidthSensitive ] ]
| _BIN
参数
CollationDesignator
指定 Windows 排序规则使用的基本排序规则。基本排序规则包括:
当指定按字典排序时应用其排序规则的字母表或语言
用于存储非 Unicode 字符数据的代码页。
例如 Latin1_General 或法文,两者都使用代码页 1252,或土耳其文,它使用代码页 1254。
CaseSensitivity
CI 指定不区分大小写,CS 指定区分大小写。
AccentSensitivity
AI 指定不区分重音,AS 指定区分重音。
KanatypeSensitive
Omitted 指定不区分大小写,KS 指定区分假名类型。
WidthSensitivity
Omitted 指定不区分大小写,WS 指定区分大小写。
BIN
指定使用二进制排序次序。
如果你只是目前查询区分,那么还是不要这样改,免得又反悔,如此查询:
select * from a
/*
a_nam a_add
---------- ----------
1 aa
1 bb
2 cc
2 vv
2 kk
3 dd
3 ee
4 dd
5 ee
6 yy
6 yy
(11 row(s) affected)
*/
现在我们查询a_add = 'aa'的,'Aa'等等不行!
Example 1:
select * from a
where a_add collate Chinese_PRC_CS_AS_WS = 'aa'
/*
a_nam a_add
---------- ----------
1 aa
(1 row(s) affected)
*/
Example 2:
select * from a
where a_add collate Chinese_PRC_CS_AS_WS = 'Aa'
/*
a_nam a_add
---------- ----------
(0 row(s) affected)
*/
方法三.上面的记不住,那么就用最笨的方法,转化为ascii
select * from a
where
ascii(substring(a_add,1,1)) = ascii(substring('Aa',1,1))
and
ascii(substring(a_add,2,1)) = ascii(substring('Aa',2,1))
/*
a_nam a_add
---------- ----------
(0 row(s) affected)
*/
方法三:任何版本都可以
select * from a
where cast(a_add as varbinary(10))= cast('aa' as varbinary(10))
分享到:
相关推荐
**Navicat for SQL Server** 是一款强大的数据库管理和开发工具,专为Microsoft SQL Server设计。它允许用户在不安装SQL Server的情况下,远程连接到数据库,从而实现对SQL Server的便捷管理和操作。Navicat提供了...
sqlserver排序规则在全角与半角处理中的应用 sql源码 简单明了好资料
那有没有什么字符集或排序规则,能兼容所有文字的?对于海外项目很痛苦啊 .Oracle 有AL32UTF8 ,MySQL 有UTF8 ,那SQL Server 有吗? 基本概念 ASCII编码 在计算机发明后不久,计算机只在美国用。他们创造出了...
SQL Server 数据库提供了一整套 Windows 和 SQL Server 专用的排序规则,SQL 语句在具有不同排序规则设置的不同数据库上下文中运行时,其运行结果可能会不同。SQL Server 排序规则由 Windows 区域设置(或者说字符集...
SQL Server支持自定义排序规则(Collations),允许我们根据特定的语言和区域设置调整排序和比较行为。例如,对于拼音处理,可以创建一个基于拼音的排序规则,使得中文字符按照拼音首字母排序: ```sql SELECT * ...
数据库引擎配置是数据库的核心配置部分,它包括选择认证模式(Windows认证模式或混合模式),添加SQL Server管理员账户,以及配置排序规则和服务器协议。认证模式的选择取决于用户是希望通过Windows操作系统的认证...
《SQL Server精华 (CHM)_sqlserver_SQLServer笔记_》是一部综合性的SQL Server学习资源,旨在帮助用户深入理解和掌握Microsoft SQL Server数据库管理系统的核心概念、功能和最佳实践。这部笔记涵盖了一系列关键知识...
在 SQL SERVER 中,我们可能会遇到 equal to 运算中的排序规则冲突问题,例如,使用 Chinese_PRC_CI_AS 和 Chinese_PRC_CS_AS 两个字符集时,出现排序规则冲突。这是因为这两个字符集的排序规则不同,导致在 equal ...
Sql Server 允许两种类型的排序规则:Windows 排序规则和 SQL 排序规则。Windows 排序规则是 Sql Server 的首选,因为它们提供了更多选项并且和微软 Windows 环境提供的支持一致。SQL 排序规则用于早期的 Sql Server...
首先,文章简要介绍了SQL Server排序规则的重要性及其应用。排序规则在SQL Server中用于控制字符串的物理存储,决定字符的位模式以及字符存储和比较时使用的规则。通过执行特定的SQL语句,可以获得数据库支持的所有...
在 SQL Server 中,`RANK()` 是一个窗口函数,它为每一行分配一个唯一的排名,根据指定的列进行排序。如果两行或多行具有相同的值,则它们将获得相同的排名,并且下一行的排名将跳过相应的数字。例如,如果有两行...
7. 排序规则:默认即可,除非有特定需求。 8. 服务器配置:建议设置为混合模式,并设置强密码的sa账户。 9. 数据目录:用户数据库文件的位置可自定义,但不建议修改根目录。 10. TempDB配置:设置TempDB数据文件数量...
字符与排序规则 排序次序 安装SQL Server的多个实例 安装SQL Server命名实例 1.3 做好安装准备 SQL Server 2005升级向导 1.4 迁移还是升级 迁移 升级 升级后的操作 1.5 选择组件 ...
SQL Server 服务器修改排序规则的方法 SQL Server 服务器修改排序规则的方法是指在 SQL Server 服务器中修改数据库环境的排序规则,以满足不同地区和语言的需求。本文将介绍如何修改 SQL Server 服务器的排序规则,...
SQL Server 区分大小写的相关设置 在 SQL Server 中,默认情况下,数据库是区分大...SQL Server 中的 COLLATE 子句可以用于控制数据库、表和列中的大小写敏感度,用户可以根据需要选择不同的排序规则和大小写敏感度。
#### 二、修改SQL Server排序规则的必要性 1. **数据一致性**:当多台服务器或不同版本的SQL Server之间进行数据交换时,如果排序规则不一致,可能会导致数据比较错误。 2. **国际化支持**:为了支持不同语言环境下...
SQL Server 2005 排序规则修改详解 SQL Server 2005 的排序规则是指数据库中对字符串的排序和比较规则,它直接影响着数据库中的数据查询和存储。在实际应用中,我们常常需要根据不同的语言和地区设置不同的排序...