SQL SERVER 简体与繁体 定序 轉換

简体中文的排序规则名称是:Chinese_PRC_CI_AS,

繁体中文的排序规则名称则是:Chinese_Taiwan_Stroke_CI_AS

更改数据库定序:

ALTER DATABASE DatabaseName SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE DatabaseName COLLATE Chinese_Taiwan_Stroke_CI_AS
ALTER DATABASE DatabaseName SET MULTI_USER WITH ROLLBACK IMMEDIATE

 

-- 修改資料庫定序為 Chinese_PRC_CI_AS
ALTER DATABASE DatabaseName SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE DatabaseName COLLATE Chinese_PRC_CI_AS;
ALTER DATABASE DatabaseName SET MULTI_USER;

-- 修改資料表定序為 Chinese_PRC_CI_AS
ALTER TABLE tableName ALTER COLUMN colName nvchar(length) 

COLLATE
Chinese_PRC_CI_AS;


要注意的是,修改資料庫的定序設定,並不會變更該資料庫內既有物件的定序設定

 

循環修改資料庫表中各字段的定序:

首先執行

declare @table_name nvarchar(50)
declare @Col_name nvarchar(50)
declare @DATA_TYPE nvarchar(50)
declare @MAX_LENGTH nvarchar(50)

declare cu cursor for
SELECT
    a.TABLE_NAME                as 表格名稱,
    b.COLUMN_NAME               as 欄位名稱,
    b.DATA_TYPE                 as 資料型別,
    b.CHARACTER_MAXIMUM_LENGTH  as 最大長度
FROM
    INFORMATION_SCHEMA.TABLES  a
    LEFT JOIN INFORMATION_SCHEMA.COLUMNS b ON ( a.TABLE_NAME=b.TABLE_NAME )
WHERE
    TABLE_TYPE='BASE TABLE'
ORDER BY
    a.TABLE_NAME, ordinal_position

open cu
fetch next from cu into @table_name,@Col_name,@DATA_TYPE,@MAX_LENGTH
begin tran
    WHILE @@FETCH_STATUS = 0
    begin
        if @DATA_TYPE ='char' or @DATA_TYPE ='varchar' or @DATA_TYPE ='nchar' or @DATA_TYPE ='nvarchar'
            print 'ALTER TABLE ' +@table_name+ ' ALTER COLUMN ['+ @Col_name + ']'
            +@DATA_TYPE+ '('+@MAX_LENGTH+')  COLLATE Chinese_Taiwan_Stroke_CI_AS;' -- Chinese_PRC_CI_AS
        if @DATA_TYPE ='text' or @DATA_TYPE ='ntext'
            print 'ALTER TABLE ' +@table_name+ ' ALTER COLUMN ['+ @Col_name + ']'
            +@DATA_TYPE+ '  COLLATE Chinese_Taiwan_Stroke_CI_AS;' -- Chinese_PRC_CI_AS
        fetch next from cu into @table_name,@Col_name,@DATA_TYPE,@MAX_LENGTH
    end

close cu
deallocate  cu
    if @@error=0
        begin
             commit tran
        end
    else
         begin
                      rollback tran
        end

然后執行上面產生的SQL
 

 

posted @ 2011-09-28 13:03  潘聪辉  阅读(4991)  评论(0编辑  收藏  举报