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

时间:2014-12-21 23:30:19

标签: sql-server excel vba ado recordset

我正在从excel VBA中填充ComboBox的SQL Server(2008 R2)存储过程生成记录集。

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

Length Example

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

执行存储过程时,我将记录集分配给变量数组,例如:

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

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

正如您所看到的,没有对值进行格式化,但表中的字段被指定为nchar(128)

有谁知道为什么每个结果都附加了空格?

1 个答案:

答案 0 :(得分:1)

我相信nchar的本质。请尝试使用nvarchar,因为它不会用空格填充数据。这是另一个有关更多详细信息,请参阅此previous SO discussion

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