ADO结果集将字段返回为字段长度

我从SQL Server(2008 R2)存储过程中生成一个logging集,该过程在Excel VBA中填充ComboBox

如果我运行一个查询来获得从表中返回的每个值的长度,它看起来像这样:

长度示例

 SELECT [outcome], LEN([outcome]) AS [Length] FROM [dbo].[crl_outcome] GROUP BY [outcome] 

在执行存储过程时,我将logging集分配给一个variables数组,例如:

 varList = oRS.GetRows() MsgBox Len(varList(1, 0)) 

MsgBox返回表中长度为21个字符的SQL语句中显示的字段,长度为128个字符,其余空格组成剩余的107个字符。

正如你所看到的,这个值没有格式化,但表中的字段被指定为nchar(128)

有谁知道为什么每个结果都有空格附加在他们的结尾?

我相信这是nchar的本质。 尝试使用nvarchar,因为它不会用空格填充数据。 这是另一个看到这个以前的讨论更多的细节。

正如您所提到的,您可以使用TRIM函数从现有string中删除尾随空格。