FOR XML Path中未使用的空间?

时间:2017-07-22 14:28:43

标签: sql sql-server xml

我有一个包含三列Category的表ID (int), Name (nchar 150), Description (nchar 500),当我尝试使用此SQL查询SELECT * FROM [CATEGORY] FOR XML PATH转换为xml时,我得到了这样的结果:

<idCat>1</idCat>
<CatName>Cat 1 ... 100 space character </CatName>
<CatDesc>Desc 1 ... 500 space character </CatDesc>

1 个答案:

答案 0 :(得分:4)

问题是源表定义。

您的姓名和说明在现实中显然不是固定的长度,因此您不应该使用固定长度的数据类型。它们将用尾随空格填充以填充声明的长度。这意味着即使实际值更短,每行也会消耗1,300个字节。

nchar列更改为nvarchar,并通过在两列上使用rtrim运行更新语句来删除已添加的尾随空格。

UPDATE Category 
SET Name = RTRIM(Name), Description = RTRIM(Description)