更改定序

來源:互聯網
上載者:User
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_AS2.--1. 為資料庫指定定序CREATE DATABASE db COLLATE Chinese_PRC_CI_ASGOALTER DATABASE db COLLATE Chinese_PRC_BINGO/*====================================*/--2. 為表中的列指定定序CREATE TABLE tb(col1 varchar(10),col2 varchar(10) COLLATE Chinese_PRC_CI_AS)GOALTER TABLE tb ADD col3 varchar(10) COLLATE Chinese_PRC_BINGOALTER TABLE tb ALTER COLUMN col2 varchar(10) COLLATE Chinese_PRC_BINGO/*====================================*/--3. 為字元變數和參數應用定序DECLARE @a varchar(10),@b varchar(10)SELECT @a='a',@b='A'--使用定序 Chinese_PRC_CI_ASSELECT CASE WHEN @a COLLATE Chinese_PRC_CI_AS = @b THEN '@a=@b' ELSE '@a<>@b' END--結果:@a=@b--使用定序 Chinese_PRC_BINSELECT CASE WHEN @a COLLATE Chinese_PRC_BIN = @b THEN '@a=@b' ELSE '@a<>@b' END--結果:@a<>@b3.表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   tbdrop   table   tb指定定序即可Windows   定序名稱  在   COLLATE   子句中指定   Windows   定序名稱。Windows   定序名稱由定序指標和比較風格構成。  文法  <   Windows_collation_name   >   ::   =          CollationDesignator_ <ComparisonStyle>        <   ComparisonStyle   >   ::=                  CaseSensitivity_AccentSensitivity                  [_KanatypeSensitive   [_WidthSensitive   ]   ]                  |   _BIN  參數  CollationDesignator  指定   Windows   定序使用的基本定序。基本定序包括:  當指定按字典排序時應用其定序的字母表或語言用於儲存非   Unicode   字元資料的字碼頁。  例如   Latin1_General   或法文,兩者都使用字碼頁   1252,或土耳其文,它使用字碼頁   1254。  CaseSensitivityCI   指定不區分大小寫,CS   指定區分大小寫。AccentSensitivityAI   指定不區分重音,AS   指定區分重音。KanatypeSensitiveOmitted   指定不區分大小寫,KS   指定區分假名類型。WidthSensitivityOmitted   指定不區分大小寫,WS   指定區分大小寫。BIN指定使用二進位排序次序。  如果你只是目前查詢區分,那麼還是不要這樣改,免得又反悔,如此查詢:select   *   from   a  /*a_nam             a_add            ----------   ----------  1                     aa1                     bb2                     cc2                     vv2                     kk3                     dd3                     ee4                     dd5                     ee6                     yy6                     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)*/方法三.上面的記不住,那麼就用最笨的方法,轉化為asciiselect   *   from   awhere  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)) 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.