文章編號: 322112 - 上次校閱: 2006年3月2日 - 版次: 8.3 比較 SQL 定序和 Windows 定序
在此頁中結論在 Microsoft SQL Server 2000 和 Microsoft SQL Server 2005
中,「定序」可指定比較和排序字串的方式,以及非 Unicode 資料使用的字元集。SQL Server 2000 支援兩種定序:
本文將告訴您,當您安裝 SQL Server 2000 或 SQL Server 2005 時,可能影響您選擇 Windows 定序或 SQL 定序的其他考量。 其他相關資訊定序語意對於 Windows 定序,使用和 Unicode 資料相同的演算法,可以實作非 Unicode 資料的比較。Unicode 和非 Unicode 排序,二者都與 Windows 特定版本中的字串比較規則相容。這樣可維持 SQL Server 中資料類型的一致性。它也讓使用 CompareString Win32 API 函式的開發人員,可以使用該 SQL Server 使用的相同規則,來排序其應用程式中的字串。在 SQL 定序中,SQL Server 會為非 Unicode 資料定義不同的比較語意。SQL Server 比較語意的基礎在於 SQL「排序順序」。有關 SQL 定序與排序順序的對應,請參閱《SQL Server 線上叢書》的<SQL 定序名稱>主題。 SQL 定序用於排序非 Unicode 資料的規則,和 Microsoft Windows 作業系統提供的任一排序常式不相容;不過,Unicode 資料的排序和特定版本的 Windows 排序規則相容。因為非 Unicode 和 Unicode 資料的比較規則不同,當您使用 SQL 定序時,根據基礎資料類型的不同,可能會發現相同字元有不同的比較結果。例如,如果您使用 SQL 定序 SQL_Latin1_General_CP1_CI_AS,則非 Unicode 字串 a-c 會排在字串 ab 之前,因為連字號 (-) 會當作獨立的字元排序,且排在 b 之前。不過,如果您將這些字串轉換成 Unicode 並執行相同的比較,Unicode 字串 N'a-c' 會被視為大於 N'ab',因為 Unicode 排序規則使用的「文字排序」會忽略連字號。 字串比較效能Unicode 排序規則較非 Unicode SQL 排序順序的規則更為複雜。當 SQL Server 比較 Unicode 資料時,字元會被指定一個權數,以根據定序的地區設定進行動態修改。資料也會根據比較樣式設定 (例如寬度、腔調字或區分假名) 而進行修改。Unicode 排序常式支援更具智慧的排序方法,例如文字排序。另外,因為常式必須處理 Unicode 資料,因此具有足夠彈性可處理數千個不同字元的排序與比較,而不像多數的 SQL Server 排序順序,最多只能處理的 255 個字元。基於這些因素,使用 Unicode 排序規則的原始字串比較工作,通常比那些使用非 Unicode SQL 排序順序的類似字串需要更多的時間和 CPU 循環。 對於 SQL Server 中資料類型和定序類型的可能組合,這所代表的意義為:
建議
如需有關相容性定序的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件: 270042?
(http://support.microsoft.com/kb/270042/
)
Description of SQL Server compatibility collations
這篇文章中的資訊適用於:
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。 | 其他資源 其他支援網站社群立即取得協助文章翻譯
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email
回此頁最上方
