2017-07-26 167 views
0

我打电话CHECKSUM_AGG(校验和())返回

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形式.LG_AE 320 InvInit

17 3028 100 100003 SCRN form.LG_AE 321 AuthIn

.........(6行中具有类似的总数据,没有空值)

返回**********

但当#FDATA包含:

17 3019 101 101001 SCRN form.LG_AE 320 InvInit

17 3019 101 101001 SCRN form.LG_AE 321 AUTHIn

......

(与类似的数据,没有空值总65行)

它返回按预期

+0

对不起你不给我们足够的信息来重新创建您的问题,请提供一个最简单的问题,包括表结构和足够的数据以显示y我们的问题。 –

+0

根据文档([这里](https://docs.microsoft.com/en-us/sql/t-sql/functions/checksum-agg-transact-sql))它返回'int'。什么类型是变量'@ HashValue'? – Rokuto

+0

DECLARE @HashValue int – aggicd

回答

0

根据this和评论,功能STR返回*因为数,其被存储在@HashValue变量,超过指定的长度(默认10)的整数。取而代之的STR使用CAST,例如:

PRINT CAST(@HashValue as varchar(20)) 

或没有铸造它只是打印值:

PRINT @HashValue 

或使用功能STR,但长度参数:

PRINT STR(@HashValue,20)