一个程序员的梦

导航

学习MSSQL2005笔记5--大小写和排序规则

今天在SQL2005中写第一个T-SQL语句,想不到写了很多次的语句竟然报错:

use adventureworks
go
select top 10 * from dbo.databaselog
系统报告dbo.databaselog不存在。

这下把我弄糊涂了!

搞了半天才弄明白,原来数据库对象使用和数据库默认的排序规则有关系,

adventureworks的排序规则是  Latin1_General_CS_AS,CS 是大小写敏感的,难怪如此。我原来已经习惯里了Chinese_PRC_CI_AS,不太注意数据库对象的大小写。

改成下面就通过了。

select top 10 * from dbo.DatabaseLog

----------------------------------------------------------------------------------------------

 

排序规则:   中文默认Chinese_PRC_CI_AS

二进制 (_BIN)

根据为每个字符定义的位模式对 SQL Server 表中的数据进行排序和比较。二进制排序顺序既区分大小写,也区分重音。二进制排序顺序的速度也最快。有关详细信息,请参阅使用二进制排序规则

如果未选择此选项,则 SQL Server 将遵循字典中定义的相关语言或字母表的排序和比较规则。

BIN2 (_BIN2)

根据 Unicode 数据的 Unicode 码位对 SQL Server 表中的数据进行排序和比较。对于非 Unicode 数据,BIN2 将使用与二进制排序相同的比较方式。

使用 BIN2 排序顺序的优点是:对已排序的 SQL Server 数据进行比较的应用程序不必重新对数据进行排序。因此,如果使用 BIN2,则应用程序开发更为简单,并且可能会提高性能。有关详细信息,请参阅使用二进制排序规则

区分大小写 (_CS)----对应_CI

区分大写字母和小写字母。如果选择此项,排序时小写字母将在其对应的大写字母之前。

如果未选择此选项,则 SQL Server 认为字母的大小写形式对于排序目的而言是相同的。

区分重音 (_AS)-----对应_AI

区分重音字符和非重音字符。例如,“a”和“?”将被视为不同的字符。

如果未选择此项,在排序时,SQL Server 将把字母的重音形式和非重音形式视为相同。

区分假名 (_KS)

区分日语中的两种假名字符类型:平假名和片假名。

如果未选择此选项,则 SQL Server 认为片假名字符和平假名字符对于排序目的而言是相等的。

区分全半角 (_WS)

区分字符的单字节形式和双字节形式。

如果未选择此项,在排序时,SQL Server 将把同一字符的单字节形式和双字节形式视为相同。

posted on 2006-09-21 17:20  newman0816  阅读(612)  评论(0编辑  收藏  举报