2017-07-26 198 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)