INF: SQL Server Truncation of a DBCS String

Article translations Article translations
Article ID: 155723 - View products that this article applies to.
This article was previously published under Q155723
Expand all | Collapse all

SUMMARY

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")
GO
SELECT * FROM test
GO
				

col1       col2
---------- ----------
SLTLTLTLTs SLTLTLTLT
				
Because the truncated string is shorter than the maximum length, the char column that does not allow a null value and the char variable is padded with trailing blanks while the varchar column will not store trailing blanks.

Properties

Article ID: 155723 - Last Review: February 14, 2005 - Revision: 3.3
APPLIES TO
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 6.5 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
Keywords: 
kbinfo kbprogramming KB155723

Give Feedback

 

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