INF:SQL Server 截斷 DBCS 字串

本文曾發行於 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")GOSELECT * FROM testGO

col1       col2---------- ----------SLTLTLTLTs SLTLTLTLT
因為該截斷字串短於最大長度,所以不允許 Null 值和 char 變數的 char 資料行會在行尾塞滿空白,而 varchar 資料行的行尾則不會儲存空白。
参考
本文件是根據 Microsoft Knowledgebase 文件編號 Q155723 翻譯的. 若要參考原始英文文件內容, 請至以下網址:

DBCS
內容

文章識別碼:155723 - 最後檢閱時間:01/16/2015 18:25:20 - 修訂: 2.1

  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 6.5 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • kbnosurvey kbarchive kbinfo kbprg KB155723
意見反應