做了如下实验:重建了一个试验用的数据库,在建立数据库时注意选用了collation: Chinese_PRC_BIN(说实话,不知道到底应该选哪一个,有for若干个中文的collation)实验1)导入了一个有中文的表,表中name字段含有中文,按name字段排序,仍然不是遵循中文拼音的次序。实验2)在此数据库中另外新建一个表,对这个表本身也使用了Chinese_PRC_BIN, 如下:drop table test
create table test
(name nvarchar(100) 
COLLATE Chinese_PRC_BIN )insert into test(name) 
values(N'上海')
insert into test(name) 
values(N'包钢')
insert into test(name) 
values(N'a上海')
insert into test(name) 
values(N'b上海')
insert into test(name) 
values(N'c上海')insert into test(name) 
values(N'河北')
insert into test(name) 
values(N'朱穆拉马')select * from test 
order by name ASC结果仍然是没有按拼音排序,:(  如下: 
a上海
b上海
c上海
上海
包钢
朱穆拉马
河北高手指点指点?

解决方案 »

  1.   

    我觉得中文排序应该是按照unicode来排序,不是按照拼音来排序,不知道哪种字符集支持拼音排序
      

  2.   

    select unicode('上海'),unicode( '包钢'),unicode('朱穆拉马'),unicode('河北')----------- ----------- ----------- ----------- 
    19978       21253       26417       27827
      

  3.   

    select unicode('a上海'),unicode( 'b包钢'),unicode('c朱穆拉马'),unicode('d河北')                                                
    ----------- ----------- ----------- ----------- 
    97          98          99          100
      

  4.   

    select * from test 
    order by name collate Chinese_PRC_CS_AS_KS_WS name         
    -----------
    a上海
    b上海
    c上海
    包钢
    河北
    上海
    朱穆拉马or:
    alter table test alter column name nvarchar(100)  COLLATE Chinese_PRC_CS_AS_KS_WSselect * from test order by namename         
    -----------
    a上海
    b上海
    c上海
    包钢
    河北
    上海
    朱穆拉马
      

  5.   

    修改排序规则如何重建 master 数据库(重建 Master 实用工具)
    重建 master 数据库 关闭 Microsoft® SQL Server™ 2000,然后运行 Rebuildm.exe。该程序位于 Program Files\Microsoft SQL Server\80\Tools\Binn 目录中。
    在"重建 Master"对话框中单击"浏览"按钮。
    在"浏览文件夹"对话框中,选择 SQL Server 2000 光盘上或用于安装 SQL Server 2000 的共享网络目录中的 \Data 文件夹,然后单击"确定"按钮。
    单击"设置"按钮。在"排序规则设置"对话框中,验证或更改用于 Master 数据库或其它数据库的设置。 
    最初,显示的是默认排序规则设置,但这些设置有可能与安装期间选择的排序规则不匹配。可以选择与安装期间使用的排序规则相同的设置,也可以选择新的排序规则设置。完成后单击"确定"按钮。在"重建 Master"对话框中单击"重建"按钮以启动进程。 
    重建 Master 实用工具重新安装 master 数据库。
      

  6.   

    可以找unicode的相关内容看一下,我估计以下都不是按照拼音排序的繁体中文(台湾) 0x30404 Chinese_Taiwan_Bopomofo 950 
    繁体中文(台湾) 0x404 Chinese_Taiwan_Stroke 950 
    简体中文(中华人民共和国) 0x804 Chinese_PRC 936 
    简体中文(中华人民共和国) 0x20804 Chinese_PRC_Stroke 936 
    中文(新加坡) 0x1004 Chinese_PRC 936 
      

  7.   

    J9988, you r so powerfulThank you very much.my problem was solved! 
    congratulations!Thanks all as well!
      

  8.   

    再给你一个小资料:排序规则的后缀 含义:
     
    _BIN 二进制排序 
    _CI_AI 不区分大小写、不区分重音、不区分假名类型、不区分宽度 
    _CI_AI_WS 不区分大小写、不区分重音、不区分假名类型、区分宽度 
    _CI_AI_KS 不区分大小写、不区分重音、区分假名类型、不区分宽度 
    _CI_AI_KS_WS 不区分大小写、不区分重音、区分假名类型、区分宽度 
    _CI_AS 不区分大小写、区分重音、不区分假名类型、不区分宽度 
    _CI_AS_WS 不区分大小写、区分重音、 不区分假名类型、区分宽度 
    _CI_AS_KS 不区分大小写、区分重音、区分假名类型、不区分宽度 
    _CI_AS_KS_WS 不区分大小写、区分重音、区分假名类型、区分宽度 
    _CS_AI 区分大小写、不区分重音、 不区分假名类型、不区分宽度 
    _CS_AI_WS 区分大小写、不区分重音、不区分假名类型、区分宽度 
    _CS_AI_KS 区分大小写、不区分重音、区分假名类型、不区分宽度 
    _CS_AI_KS_WS 区分大小写、不区分重音、区分假名类型、区分宽度 
    _CS_AS 区分大小写、区分重音、不区分假名类型、不区分宽度 
    _CS_AS_WS 区分大小写、区分重音、不区分假名类型、区分宽度 
    _CS_AS_KS 区分大小写、区分重音、区分假名类型、不区分宽度 
    _CS_AS_KS_WS 区分大小写、区分重音、区分假名类型、区分宽度
      

  9.   

    宝典呀!
    我当时在SqlServer Books Online上找了半天都没有得到满意的解答。
    谢谢!这个帖子我要晚点结,多方两天让大家看看吧。
      

  10.   

    找了一些资料http://www.microsoft.com/china/msdn/library/techart/IntlFeaturesInSQLServer2000.asp
      

  11.   

    to :piscean_163还是j9988(j9988) 知道得多啊,我以为没有按照拼音排序的呢,看帮助看不出来哪个是按照拼音排序的。