В настоящее время я получаю сообщение об ошибке при попытке выполнить простую инструкцию SELECT
, которая ссылается на сборку, содержащую код C# для алгоритма расстояния Джаро-Винклера. Я впервые работаю с SQLCLR.
Я могу успешно запустить код ниже без дополнительного оператора OR
Пример:
SELECT
*
FROM
USERS
WHERE
(
DATE_OF_BIRTH IS NOT NULL
AND DBO.JAROWINKLER(CONVERT(VARCHAR(6),DATE_OF_BIRTH,12),@DOB) > 0.9
)
OR
(
USERID = @USERID
)
Однако, когда я включаю оператор OR
, я получаю это сообщение об ошибке:
Произошла ошибка .NET Framework во время выполнения определяемой пользователем подпрограммы или агрегата "JaroWinkler":
System.NullReferenceException: ссылка на объект не указывает на экземпляр объекта. System.NullReferenceException: at JaroWinklerDistanceCLR.JaroWinklerDistance.proximity(String aString1, String aString2)
Код ниже работает и делает то, что нужно. Мне просто интересно, есть ли другой способ? В идеале я бы хотел, чтобы он содержал один оператор SELECT
. Я понятия не имею, к чему относится приведенная выше ошибка, в столбце UserID
нет значений NULL
.
Набор разрешений для сборки установлен на Безопасный.
Рабочий пример:
SELECT
*
FROM
USERS
WHERE
DATE_OF_BIRTH IS NOT NULL
AND DBO.JAROWINKLER(CONVERT(VARCHAR(6),DATE_OF_BIRTH,12),@DOB) > 0.9
UNION ALL
SELECT
*
FROM
USERS
WHERE
USERID = @USERID