第一次用SqlServer ,发现不能区分全角半角,上网查了查,说是排序规则的原因,请教达人:
能够在不改变当前表结构,数据的前提下更改排序规则吗,如果能改,应该怎么改,请具体指教,本人以前只用过oracle,对SqlServer纯属菜鸟,非常感谢!

解决方案 »

  1.   

    修改默认字符集和排序规则
    默认字符集
    Alter database 数据库名称 Collate Chinese_PRC_BIN 
    排序
    ALTER DATABASE 数据库名 COLLATE 排序规则名 
      

  2.   

    修改数据库的修改排序规则
    alter database 数据库 collate 排序规格
    其中,某些排序规则指定CI 不区分大小写,CS 指定区分大小写。如:alter database 数据库 COLLATE Chinese_PRC_CI_AS 
        不区分大小写,而
        alter database 数据库 COLLATE Chinese_PRC_CS_AS 
        使之区分大小写。使用如下命令,可以获得更多的规则:
    SELECT *
    FROM ::fn_helpcollations()
      

  3.   

     排序规则在全角与半角处理中的应用
    --1.查询区分全角与半角字符
    --测试数据
    DECLARE @t TABLE(col varchar(10))
    INSERT @t SELECT 'aa'
    UNION ALL SELECT 'Aa'
    UNION ALL SELECT 'AA'   --全角A
    UNION ALL SELECT 'A,A' --全角A,半角逗号(,)
    UNION ALL SELECT 'A,A' --全角A,全角逗号(,)--1.查大写字母
    SELECT * FROM @t
    WHERE col COLLATE Chinese_PRC_CS_AS_WS like '%A%'--2.查全角字母
    SELECT * FROM @t
    WHERE col COLLATE Chinese_PRC_CS_AS_WS like '%A%'--3.查半角逗号(,)
    SELECT * FROM @t
    WHERE col COLLATE Chinese_PRC_CS_AS_WS like '%,%'--3.查全角逗号(,)
    SELECT * FROM @t
    WHERE col COLLATE Chinese_PRC_CS_AS_WS like '%,%'
    GO
    /*=============================================*/
    --2 实现全角与半角字符转换的处理函数
    CREATE FUNCTION f_Convert(
    @str NVARCHAR(4000), --要转换的字符串
    @flag bit              --转换标志,0转换成半角,1转换成全角
    )RETURNS nvarchar(4000)
    AS
    BEGIN
    DECLARE @pat nvarchar(8),@step int,@i int,@spc int
    IF @flag=0
    SELECT @pat=N'%[!-~]%',@step=-65248,
    @str=REPLACE(@str,N' ',N' ')
    ELSE
    SELECT @pat=N'%[!-~]%',@step=65248,
    @str=REPLACE(@str,N' ',N' ')
    SET @i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str)
    WHILE @i>0
    SELECT @str=REPLACE(@str,
    SUBSTRING(@str,@i,1),
    NCHAR(UNICODE(SUBSTRING(@str,@i,1))+@step))
    ,@i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str)
    RETURN(@str)
    END
    GO
      

  4.   

    请问如何查看当前的排序规则呢?我现在用的是日语系统和日语版的SqlServer,请问应该怎么改呢,非常感谢
      

  5.   

    数据库->右键->General->Collation->Collation那里就是排序规则啦
      

  6.   

    在哪儿点右键啊,SqlServer的管理工具?
      

  7.   

    SELECT [NAME],[COLLATION_NAME] FROM SYS.DATABASES