校验和 SQL 语句的差异

Difference in the checksum SQL statements

下面两种不同的说法有什么区别?请解释输出。

 SELECT CHECKSUM(CONVERT(NVARCHAR,30))

结果:51136012

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

结果:38

默认长度不同。首先,它类似于 32。但是当你这样做时:

 declare @aa nvarchar;

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

在SQL服务器中,总是使用varchar()类型的长度:

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

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