2012-11-04 60 views
3

我正在使用SQL Server 2008,Visual Web Developer 2012和.net 4.0。我在SQL Server中创建了一个表并添加了一些列。我给了一些列数据类型nchar(10)SQL Server数据库中数据类型为nchar的问题

现在我的问题是,当我插入的少于10个字符的字符串作为列类型nchar(10)的值,当我拿来的价值它插入空格完成10字符串。

意味着,如果我插入"a"nchar(10)类型的列,然后 当我再次读取该值,我回去:"a "

我怎样才能解决这个问题?

+1

使用varchar或nvarchar代替 –

+0

而不是改变数据类型,这不可能解决这个问题吗? – user1740381

+1

更改数据类型是解决方案。您正在使用错误的数据类型来满足您的需要并尝试更改**数据类型**。我认为这是不可能的。即使可以改变,你以后也会面临问题。所以保持简单 –

回答

0

如果您不希望更改的数据类型,则需要从输出

SELECT 
    RTRIM("a  ") AS ColumnName 
FROM MyTable 

TRIM空间但这意味着每次你有时间来做到这一点,你所使用的列的每一个地方。用户VARCHAR(10)或NVARCHAR(20)更好,其中VAR ...表示可变长度。所以,如果不超过10个字符,空格不加你的字符串

最终SQL

SELECT 
    RTRIM(ColumnName) AS ColumnName 
FROM myTable 
3

你可以这样做修剪空格:

SELECT RTRIM(CAST(col As NVARCHAR(10))) FROM test 

退房SQLFIDDLE

2

定义字符串作为nvarchar(10)该宏将会l工作正常