变量只存储选择结果的第一个字母

时间:2016-04-04 16:02:21

标签: sql tsql

我有一个单元格,其中包含两个字母的nvarchar作为其内容,我想将其保存为一个简单的nvarchar变量,但是,只使用以下代码保存双字母单元格内容的第一个字母。

DECLARE @RC NVARCHAR = (SELECT Value FROM @scoreTable WHERE Metric = 'RC')


-- this returns 'ND' as expected
SELECT Value FROM @scoreTable WHERE Metric = 'RC' 

-- but this returns 'N'! Why?
SELECT @RC 

我完全难过了。如何将两个字母(即单元格的所有内容)保存到变量@RC

1 个答案:

答案 0 :(得分:4)

您需要在SQL Server中声明字符类型的长度:

DECLARE @RC NVARCHAR(255) = (SELECT Value FROM @scoreTable WHERE Metric = 'RC')

在SQL Server(但不是所有其他数据库)中,始终使用字符类型的长度。默认值因上下文而异,因此依赖于默认长度可能会非常混乱。