CHECKSUM_AGG(校验和()) returns 星 (************)

CHECKSUM_AGG(checksum()) returns stars (**********)

我在打电话

id int ,
tableid int,
seid int,
ptid int,
VISID NVARCHAR(50),
Tname AS SYSNAME ,
ColumnValue NVARCHAR(50),
ColumnKey NVARCHAR(50),
@HashValue NVARCHAR(50) OUTPUT

select @HashValue = CHECKSUM_AGG(checksum(id,tableid, seid, ptid, VISID, Tname, ColumnKey, ColumnValue))  from #FDATA 

当#FDATA 包含:

17 3028 100 100003 SCRN form.LG_AE 320 InvInit

17 3028 100 100003 SCRN form.LG_AE 321 AuthIn

......... (6 rows in total with similar data, no null values)

它returns **********

但是当#FDATA 包含:

17 3019 101 101001 SCRN form.LG_AE 320 InvInit

17 3019 101 101001 SCRN form.LG_AE 321 AUTHIn

...... (65 rows in total with similar data, no null values)

它 returns 是预期的整数

根据this and comments, function STR returns * 因为存储在@HashValue变量中的数字超过指定长度(默认10)。使用 CAST 而不是 STR,例如:

PRINT CAST(@HashValue as varchar(20))

或者只打印值而不转换它:

PRINT @HashValue

或使用函数STR,但长度参数:

PRINT STR(@HashValue,20)