我有一个单元格,其中包含两个字母的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
?
答案 0 :(得分:4)
您需要在SQL Server中声明字符类型的长度:
DECLARE @RC NVARCHAR(255) = (SELECT Value FROM @scoreTable WHERE Metric = 'RC')
在SQL Server(但不是所有其他数据库)中,始终使用字符类型的长度。默认值因上下文而异,因此依赖于默认长度可能会非常混乱。