當前位置:首頁 » 編程語言 » sql2008排序規則

sql2008排序規則

發布時間: 2023-07-13 22:56:29

sql Server2008 修改排序規則會有什麼影響

你好,排序規則對資料庫應該沒有影響的,一般應用都會有自己的排序規則,要不就在sql層面處理了,要部就在代碼層面處理了。

② SQL server中如何更改排序規則

1、首先新建一個資料庫,如圖為test。

③ SQL Server轉換資料庫的排序規則

什麼是排序規則?

排序規則指定了表示每個字元的位模式 它還指定了用於排序和比較字元的規則 排序規則具有下面的特徵

◆語言

◆區分大小寫

◆區分重音

◆區分假名

要了解伺服器當前使用的排序規則 可以在 SQL 查詢分析器中運行 sp_helpsort 系統過程

SQL Server 不支持使用多個排序規則的資料庫 因此 在 SQL Server 中創建的所有資料庫均使用默認的排喊瞎序規則 SQL Server 支持多個排序鄭譽空規則 SQL Server 資料庫可使用除默認排序規則以外的其他排序規則 此外 SQL Server 還支持使用排序規則(除資料庫創建的排序規則外)的列

在 DTS 中使用「使用排序規則」選項的條件

SQL Server 可包含多個資料庫或列 它們可以使用除默認排序規則以外的排序規則 因此 在數據轉換服務 (DTS) 中引入了名為「使用排序規則」的新選項 「使用排序規則」選項的行為由要執行的轉換的類型決定 如果要在 SQL Server 的兩個實例之間傳輸數據且啟用了「使用排序規則」選項 則數據將從源代碼頁轉換到目標代碼頁 如果沒有啟用「使用排序規則」選項且 SQL Server 的兩個實例中的代碼頁相同 則會直接傳輸數據 如果代碼頁不同 則數據將從源代碼頁轉換到目標代碼頁 但是 在傳輸數據時 轉換可能會出現錯誤

注意 如果排序規則用於數據本身並且列使用的是 COLLATE 子句 則排序規則很重要 「使用排序規則」選項確定當數據從一個排序規則傳輸到另一個排序規則時是否轉換代碼頁 「使用排序規則」選項不會影響是否設置了列定義的 COLLATE 屬性 因此 如果源表包含使用 COLLATE 子句創建的帶有特定排序規則的列 則此排序規則將在傳輸數據時得以保留 而不管是否在數據轉換服務向導中啟用了「使用排序規則」選項

不改變資料庫排序規則的轉換方法

下列方法不改變資料庫的排序規則

◆備份和還原虛鏈 在某伺服器上還原資料庫時 如果該伺服器使用的排序規則與用於備份的伺服器使用的排序規則不同 則不會將還原後的資料庫轉換為使用新的排序規則 資料庫排序規則仍保持原樣

◆分離和重新附加 如果分離使用某一排序規則創建的資料庫 並且將該資料庫重新附加到使用其他排序規則的另一伺服器 則該資料庫的排序規則不會改變 資料庫的排序規則仍保持原樣

◆復制資料庫向導 復制資料庫向導實質上使分離和重新附加的過程自動化了 資料庫的排序規則仍保持原樣

注意 復制資料庫向導僅在 SQL Server 中可用

在 SQL Server 中轉換資料庫的排序規則

要在運行 SQL Server 的兩台計算機之間更改資料庫的排序規則 必須在目標伺服器上創建用戶資料庫和所有對象 然後使用 DTS 或 bcp 實用工具傳輸數據

要將資料庫從運行 SQL Server 的計算機傳輸到運行 SQL Server 且具有另一排序規則的計算機 請按照下列步驟操作

備份源資料庫

使用 SQL Server 企業管理器為源資料庫中的所有對象創建腳本

要從資料庫的所有表中導出數據 請使用 DTS 或 bcp 實用工具

使用 SQL Server 企業管理器或 CREATE DATABASE 語句在目標伺服器上創建新的資料庫

注意 當使用 CREATE DATABASE 語句時 資料庫將使用與運行 SQL Server 的計算機相同的排序規則

使用 SQL 查詢分析器來運行在步驟 中創建的腳本 以便在目標資料庫中重新創建所有對象

注意 此表和列將使用與運行 SQL Server 的計算機相同的排序規則

使用 DTS 或 bcp 實用工具將數據導入到目標表中

將 SQL Server 中資料庫的排序規則轉換為 SQL Server 中的排序規則

要在 SQL Server 和 SQL Server 之間更改資料庫的排序規則 必須在傳輸數據之前 在目標伺服器上使用適當的排序規則創建資料庫 列或同時創建資料庫和列 但是 在將數據從 SQL Server 傳輸到 SQL Server 時 可以使用 DTS 刪除並重新創建對象 因此 在執行此操作時 必須在 DTS 中啟用「使用排序規則」選項

注意 請不要使用 SQL Server 中的 DTS 實用工具與運行 SQL Server 的計算機相互傳輸所有對象 如果必須在 SQL Server 和 SQL Server 之間傳輸數據 則必須使用 SQL Server 中的 DTS 實用工具

要將 SQL Server 中資料庫的排序規則轉換為 SQL Server 中的排序規則 請按照下列步驟操作

備份源資料庫

使用 SQL Server 企業管理器為源資料庫中的所有對象創建腳本

如果列必須使用其他排序規則 而不使用目標資料庫上的默認排序規則 請對腳本中相應列的排序規則進行必要的更改

使用適當的排序規則在目標伺服器上創建新的資料庫

使用 SQL 查詢分析器在目標伺服器上運行在步驟 中創建的腳本 以便在資料庫中重新創建所有對象

注意 新表和列使用與資料庫相同的排序規則 除非您為這些列指定了其他排序規則

使用 DTS 或 bcp 實用工具傳輸數據

注意 如果使用 DTS 請驗證下列信息

◆確保在將數據從 SQL Server 傳輸到 SQL Server 時啟用了「使用排序規則」選項

◆因為已在目標伺服器上使用適當的排序規則創建了對象 所以要禁用「首先創建目標對象」選項

在 SQL Server 中轉換資料庫的排序規則

要在 SQL Server 中轉換資料庫的排序規則 請按照下列步驟操作

備份源資料庫

注意所有列是否使用 COLLATE 子句

使用適當的排序規則在目標伺服器上創建新的資料庫

如果沒有列使用 COLLATE 子句 請使用 DTS 將數據傳輸到目標伺服器 為此 請啟用「使用排序規則」選項以進行代碼頁轉換 並將數據轉換為目標資料庫上的新排序規則 如果所有列均使用 COLLATE 子句 請按照下列步驟操作

a 為所有對象(不包括索引 觸發器 主鍵 外鍵 默認設置和約束)生成腳本 此外 確保啟用了「僅為與 版兼容的功能編寫腳本」選項 以便從腳本刪除 COLLATE 子句

注意 使用「僅為與 版兼容的功能編寫腳本」選項時 可以更改排序規則 但是 生成腳本時將不考慮任何新的 SQL Server 選項(包括用戶定義的函數 擴展屬性 INSTEAD OF 觸發器和視圖上的索引)

b 在目標資料庫上運行步驟 a 中創建的腳本 以便使用目標資料庫的排序規則創建對象

c 使用 DTS 僅傳輸源資料庫中的數據

d 成功傳輸數據後 將會為源資料庫中的所有約束 外鍵 主鍵和索引生成腳本

e 在目標資料庫上運行步驟 d 中創建的腳本

更改 master 資料庫的排序規則

如果要更改 master 資料庫的排序規則 則必須重建 master 資料庫 在重建 master 資料庫時 實質上是創建了新的 master 資料庫 因此 重建 master 資料庫之前 應考慮下列事項

◆確保創建了當前 master 資料庫的有效備份 在重建 master 資料庫時 還會重建 msdb 資料庫和 model 資料庫 因此 在重建 master 資料庫之前必須備份 msdb 資料庫和 model 資料庫 msdb 資料庫是用於存儲 SQL Server 作業 警報 運算符和 DTS 包的系統資料庫 model 資料庫是創建新資料庫時所使用的模板資料庫

◆因為重建 master 資料庫會創建一個新的 master 資料庫 所以必須在重建 master 資料庫之後重新輸入現有登錄信息 因此 還必須在重建 master 資料庫之前導出登錄信息 然後在重建 master 資料庫後 導入登錄信息

◆因為在重建 master 資料庫時會重建 msdb 資料庫 所以在重建 master 資料庫之前 必須為所有作業 警報和運算符生成腳本 此外 還必須確保移動了所有 DTS 包

◆因為在重建 master 資料庫時會重建 model 資料庫 所以在重建 master 資料庫之前 必須記下或導出以前對 model 資料庫所做的全部更改或為其生成腳本 重建 model 資料庫之後 請重新應用已記錄的全部更改

在 SQL Server 中更改 master 資料庫的排序規則

更改 master 資料庫的排序規則之前 請按照下列步驟操作

重建 master 資料庫之後 不會自動恢復在重建此資料庫之前創建的所有資料庫 因此 所有資料庫必須從備份進行還原 或者如果文件仍在磁碟上 則可以使用 sp_attach_db 系統存儲過程重新附加資料庫 請確保在重建 master 資料庫之前將所有必要的信息重新附加到現有資料庫

在重建 master 資料庫時 僅更改 master 資料庫 model 資料庫和 msdb 資料庫的排序規則 不會更改用戶資料庫的排序規則 要更改現有用戶資料庫的排序規則或者使用適當的排序規則創建新的資料庫 請使用 ALTER DATABASE 命令 然後使用 DTS 或 bcp 實用工具將數據傳輸到新的資料庫

注意 如果在 SQL Server 中使用 ALTER DATABASE 命令來更改資料庫的排序規則 則表中列的排序規則將不會自動更改 要更改列的排序規則 請使用 ALTER TABLE 命令和 ALTER COLUMN 命令 如果使用 DTS 則可以在傳輸數據或使用「使用排序規則」選項之前 使用適當的排序規則創建表和列 如果使用的 DTS 和表已經包含適當的排序規則 請確保在運行軟體包之前禁用了「首先刪除現有對象」選項

在 SQL Server 中更改 master 資料庫的排序規則

更改 master 資料庫的排序規則之前 請按照下列步驟操作

SQL Server 不支持資料庫使用除默認排序規則以外的排序規則 因此 在重建 master 資料庫之前 請從用戶資料庫中導出所有數據

為資料庫中的所有對象生成腳本

使用適當的排序規則重新創建 master 資料庫

創建新的資料庫 使用新的默認排序規則自動創建新的資料庫

lishixin/Article/program/SQLServer/201311/22349

④ SQL SERVER 2008 如何更改默認的排序規則

請問怎麼更改排序規則呢

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_AS

2.

--1. 為資料庫指定排序規則
CREATE DATABASE db COLLATE Chinese_PRC_CI_AS
GO

ALTER DATABASE db COLLATE Chinese_PRC_BIN
GO

/*====================================*/

--2. 為表中的列指定排序規則
CREATE TABLE tb(
col1 varchar(10),
col2 varchar(10) COLLATE Chinese_PRC_CI_AS)
GO

ALTER TABLE tb ADD col3 varchar(10) COLLATE Chinese_PRC_BIN
GO

ALTER TABLE tb ALTER COLUMN col2 varchar(10) COLLATE Chinese_PRC_BIN
GO

/*====================================*/

--3. 為字元變數和參數應用排序規則
DECLARE @a varchar(10),@b varchar(10)
SELECT @a='a',@b='A'

--使用排序規則 Chinese_PRC_CI_AS
SELECT CASE WHEN @a COLLATE Chinese_PRC_CI_AS = @b THEN '@a=@b' ELSE '@a<>@b' END
--結果:@a=@b

--使用排序規則 Chinese_PRC_BIN
SELECT CASE WHEN @a COLLATE Chinese_PRC_BIN = @b THEN '@a=@b' ELSE '@a<>@b' END
--結果:@a<>@b

3.

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 tb

drop table tb

指定排序規則即可

Windows 排序規則名稱
在 COLLATE 子句中指定 Windows 排序規則名稱。Windows 排序規則名稱由排序規則指示器和比較風格構成。

語法
< Windows_collation_name > :: =

CollationDesignator_ <ComparisonStyle>

< ComparisonStyle > ::=
CaseSensitivity_AccentSensitivity
[_KanatypeSensitive [_WidthSensitive ] ]
| _BIN

參數
CollationDesignator

指定 Windows 排序規則使用的基本排序規則。基本排序規則包括:

當指定按字典排序時應用其排序規則的字母表或語言

用於存儲非 Unicode 字元數據的代碼頁。
例如 Latin1_General 或法文,兩者都使用代碼頁 1252,或土耳其文,它使用代碼頁 1254。

CaseSensitivity

CI 指定不區分大小寫,CS 指定區分大小寫。

AccentSensitivity

AI 指定不區分重音,AS 指定區分重音。

KanatypeSensitive

Omitted 指定不區分大小寫,KS 指定區分假名類型。

WidthSensitivity

Omitted 指定不區分大小寫,WS 指定區分大小寫。

BIN

指定使用二進制排序次序。

如果你只是目前查詢區分,那麼還是不要這樣改,免得又反悔,如此查詢:
select * from a
/*
a_nam a_add
---------- ----------
1 aa
1 bb
2 cc
2 vv
2 kk
3 dd
3 ee
4 dd
5 ee
6 yy
6 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)
*/

方法三.上面的記不住,那麼就用最笨的方法,轉化為ascii
select * from a
where
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))

⑤ sql server 2008中怎麼自定義列排序呢

查詢時輸入

selectuser,sex,agefromuser

就行,完全無影響的

⑥ sql server 2008 怎麼查看資料庫排序規則

首先要知道資料庫排序規則的含義,如Chinese_PRC_CI_AS就可以不區分大小寫了,下面為Chinese_PRC打頭的規則: _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 區分大小寫、區分重音、區分假名類型、區分全半形 如需要對資料庫重新進行規則設定,具體步驟如下: 1、找到sql2005 的安裝包 2、執行下面的批處理,指定某種規則,如Chinese_PRC_CI_AS 內容如下: cd D:\SQL Server 2005\SQL Server x86\Servers start /wait setup.exe /qb INSTANCENAME=MSSQLSERVER REINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD=sa SQLCOLLATION=Chinese_PRC_CI_AS 3、重新附加一下資料庫就發現排序規則變更了。

⑦ SQL排序問題

sql排序的規則是,按照第一個欄位的順序正序或倒序排列,
當第一個欄位是相同的,那麼會按照第二個欄位的正序或倒序排列
依次類推,如果後面沒有排序欄位,會隨機排列
所以,按照第一個欄位倒序,按照第二個欄位正序排列,結果視覺顯示全部到序,原因可能是
第一個欄位並無相同的,且第一個欄位和第二個排序欄位數值的增減是成反比的。

⑧ 資料庫sqlserver2008 排序規則問題怎麼解決(作業)

[原因]
http://blog.163.com/xyz_1112/blog/static/3869440220095247393290/

你的Update 語句內連接出了問題。

[解決]
先連接a資料庫 然後用opendatasource將b的查詢結果放到a的內存。
select * into #temp from(
select * from
opendatasource( 'SQLOLEDB ', 'Data Source=192.168.1.121;User ID=sa;Password=@admin' ).[CARD].[dbo].[Card]
)
再用你的update語句
update語句如上,做a與#temp的連接

⑨ SQl 中的排序規則什麼意思

你說的是查詢結果按某列的升序和降序排列嗎?
升序 order by [列名] asc(默認)
降序 order by [列名] desc

熱點內容
光遇花開腳本封號嗎 發布:2025-02-08 18:23:15 瀏覽:532
怎麼弄ld帳號和密碼 發布:2025-02-08 18:11:42 瀏覽:627
新逍客20發動機壓縮比 發布:2025-02-08 17:58:10 瀏覽:115
qq號和密碼我都知道為什麼登不上 發布:2025-02-08 17:52:21 瀏覽:872
寶塔伺服器ip進不去 發布:2025-02-08 17:52:18 瀏覽:382
擔保中介源碼 發布:2025-02-08 17:14:37 瀏覽:413
手機存儲卡速度測試 發布:2025-02-08 17:02:57 瀏覽:26
洪恩編程 發布:2025-02-08 17:02:19 瀏覽:815
linux遠程式控制制 發布:2025-02-08 17:02:16 瀏覽:154
珠心算演算法 發布:2025-02-08 17:00:37 瀏覽:920