INF: SQL Server Truncation of a DBCS String

This article was previously published under Q155723
This article has been archived. It is offered "as is" and will no longer be updated.
If dual byte character set (DBCS) data is too long to fit into a char or varchar column, the data is truncated to fit into the column. If Microsoft SQL Server uses a DBCS code page and this truncation happens right in the middle of a double-byte character, the whole double-byte character is discarded.

The following scripts demonstrate this truncation. It is assumed that the code page that applies here is a DBCS code page.
CREATE TABLE test(  col1 char (10),  col1 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				
Because the truncated string is shorter than the maximum length, the charcolumn that does not allow a null value and the char variable is paddedwith trailing blanks while the varchar column will not store trailing blanks.

Article ID: 155723 - Last Review: 01/16/2015 18:25:13 - Revision: 3.3

Microsoft SQL Server 7.0 Standard Edition, Microsoft SQL Server 6.5 Standard Edition, Microsoft SQL Server 2000 Standard Edition

  • kbnosurvey kbarchive kbinfo kbprogramming KB155723