校验和SQL语句的差异

时间:2015-07-30 11:58:53

标签: sql sql-server sql-server-2008 sql-server-2005

下面两个不同的陈述有什么区别?请解释输出。

 SELECT CHECKSUM(CONVERT(NVARCHAR,30))

结果:51136012

 DECLARE @AA NVARCHAR
SET @AA= CONVERT(NVARCHAR,30)
SELECT CHECKSUM(@AA)

结果:38

1 个答案:

答案 0 :(得分:2)

默认长度不同。在第一个中,它类似于32.但是当你这样做时:

 declare @aa nvarchar;

默认长度为1.因此,第二个只使用第一个字符。

在SQL Server中,始终使用varchar()类型的长度:

SELECT CHECKSUM(CONVERT(NVARCHAR(255), 30))

DECLARE @AA NVARCHAR(255);
SET @AA= CONVERT(NVARCHAR(255), 30);
SELECT CHECKSUM(@AA);