Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQL Server中创建计算CRC16的函数?_Sql_Sql Server_Database_Function_Checksum - Fatal编程技术网

如何在SQL Server中创建计算CRC16的函数?

如何在SQL Server中创建计算CRC16的函数?,sql,sql-server,database,function,checksum,Sql,Sql Server,Database,Function,Checksum,知道如何告诉我sql中是否有计算CRC16的函数,计算方法列为“CRC-CCITT(0xFFFF)” CRC-CCITT(0xFFFF)->多项式:x^16+x^12+x^5+1 我尝试创建以下函数,但计算不正确: ( @input varchar(max) ) RETURNS int WITH SCHEMABINDING AS BEGIN DECLARE @crc bigint = 0xffff , @result int ;

知道如何告诉我sql中是否有计算CRC16的函数,计算方法列为“CRC-CCITT(0xFFFF)”

CRC-CCITT(0xFFFF)->多项式:x^16+x^12+x^5+1

我尝试创建以下函数,但计算不正确:

(
    @input varchar(max)
)
RETURNS int
WITH SCHEMABINDING
AS
BEGIN
    DECLARE @crc        bigint = 0xffff
    ,       @result     int
    ;
    SELECT @crc = dbo.CRC16calc(@crc, Ascii(Substring(@input, v.id, 1)))
    FROM    dbo.IndexTable(1, LEN(@input)) AS v
    ORDER
    BY      v.Id
    ;
    SET @result = (CONVERT(int, CONVERT(VARBINARY(4), ~@crc))) ;
    RETURN @result ;
END