INF:SQL Server 截斷 DBCS 字串

文章翻譯 文章翻譯
文章編號: 155723 - 檢視此文章適用的產品。
本文曾發行於 CHT155723
全部展開 | 全部摺疊

結論

如果雙重位元組字元集 (DBCS) 資料太長,無法符合 char 或 varchar 資料行的大小,那資料便會截斷,以符合資料行的大小。 如果 Microsoft SQL Server 使用 DBCS 字碼頁(code page),且此截斷發生在雙位元字元的中間,那整個雙位元字元便會被丟棄。

下列指令碼是截斷的示範。我們假設此處應用的字碼頁為 DBCS字碼頁。
CREATE TABLE test
(
  col1 char (10),
  col2 varchar (10)
)
GO

/* Let D represent a double character. */ 
/* Let L represent the leading byte.   */ 
/* Let T represent the trailing byte.  */ 
/* Let S represent a single character. */ 
/* Let s represent space (ASCII 20).   */ 

INSERT test VALUES ("SDDDDD", "SDDDDD")
GO
SELECT * FROM test
GO

col1       col2
---------- ----------
SLTLTLTLTs SLTLTLTLT
因為該截斷字串短於最大長度,所以不允許 Null 值和 char 變數的 char 資料行會在行尾塞滿空白, 而 varchar 資料行的行尾則不會儲存空白。

?考

本文件是根據 Microsoft Knowledgebase 文件編號 Q155723 翻譯的. 若要參考原始英文文件內容, 請至以下網址:

http://support.microsoft.com/support/kb/articles/Q155/7/23.asp

屬性

文章編號: 155723 - 上次校閱: 2004年1月20日 - 版次: 2.1
這篇文章中的資訊適用於:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 6.5 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
關鍵字:?
kbinfo kbprg KB155723
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com