SQL Server 查询结果末尾的空格

Posted

技术标签:

【中文标题】SQL Server 查询结果末尾的空格【英文标题】:Empty space at the end of SQL Server query results 【发布时间】:2011-03-26 13:53:00 【问题描述】:

我刚刚安装了 Microsoft SQL Server 2008 R2 以使用 LINQ to SQL 进行测试。

我有一个表格,其中有一列类型为 nchar(20) 和两行:“123”和“测试”。

如果我查询该表中的所有行并用“'”包装每个值,我会得到以下信息:

'123 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ' ( _ is a space)

'Test _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ' ( _ is a space)

SQL Server 似乎正在用空格填充未使用的空间(因为该列是 20 字节的 nchar)。

我能做些什么来防止这种情况发生?

【问题讨论】:

只是补充一点,它是一个 40 字节的 nchar 而不是你的问题中的 20 。 Unicode 数据类型占用双倍空间。 【参考方案1】:

使用 nvarchar 代替 nchar。如您所见,nchar 是一个用空格填充的固定宽度字段。

【讨论】:

【参考方案2】:

将列类型更改为nvarchar

见nchar and nvarchar。

【讨论】:

【参考方案3】:

你需要nvarchar,它很灵活。

【讨论】:

以上是关于SQL Server 查询结果末尾的空格的主要内容,如果未能解决你的问题,请参考以下文章

sql server 2005 删除字段中间的空格

sql server查询结果集复制出来的行数和在SSMS上的行数不一致

由于空格,ADODB.Recordset 到 SQL Server 查询失败

怎么判断sql server中某字段含空格

sql server将查询结果放入新表?

SQL server查询结果拼接