Преобразование функции С# в эквивалентную функцию SQL

101
11

У меня есть функция aС#, как показано ниже.

public double myFunction(byte[] hashA, byte[] hashB)
{
byte[] D = new byte[72];
for (int i = 0; i < 72; i++)
{
D[i] = (byte)(hashA[i] ^ hashB[i]);
}
double bits = (double)72 * 8;
double magic = //Snipped code using D
double k = (magic / bits);
return (100 - (100 * k)); ;
}

Я хочу преобразовать его в эквивалентную функцию SQL Server. Я написал функцию, как показано ниже. Тем не менее, я застрял в преобразовании следующей строки

 D[i] = (byte)(hashA[i] ^ hashB[i]); 

Функция MY SQL приведена ниже:

CREATE function [dbo].[MyFunction](@hash1 binary(72), @hash2 binary(72))
returns int

AS
BEGIN
DECLARE @dist float, @D binary(72)
DECLARE @i INT
DECLARE @bits float, @k float
SET @i = 0
SET @i = 0
WHILE @i <= 72
BEGIN
SET @D[i] = CAST((@hash1[i] ^ @hash2[i]) AS BINARY)

SET @i = @i + 1
END

END

спросил(а) 2015-03-30T16:32:00+03:00 4 года, 10 месяцев назад
1
Решение
67

вы можете использовать что-то вроде этого.

DECLARE @hash1Byte binary(1)
DECLARE @hash2Byte binary(1)
DECLARE @d binary(1)
SET @i = 0
WHILE @i < 72
BEGIN
SET @i = @i + 1

set @hash1Byte = substring(@hash1, @i, 1)
set @hash2Byte = substring(@hash2, @i, 1)
set @d = @hash1Byte ^ @hash2Byte

END

ответил(а) 2015-03-30T20:15:00+03:00 4 года, 10 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема