Лучший способ написания этого SQL-предложения WHERE - PullRequest
1 голос
/ 18 ноября 2010

У меня есть кое-что похожее на следующее предложение WHERE в моем операторе SQL:

AND (ipdp.UserID!=dbo.fn_userid(ipdp.ItemID) OR dbo.fn_userid(ipdp.ItemID) IS NULL)

Однако мне не нравится, как функция dbo.fn_userid запускается дважды.Как я могу улучшить эту строку кода, чтобы она выполнялась только один раз?

ipdp.UserID всегда является ненулевым целочисленным значением

dbo.fn_userid может возвращать NULL илиЦелочисленное значение

Приветствия.

1 Ответ

4 голосов
/ 18 ноября 2010

Попробуйте:

 AND ipdp.UserID != ISNULL(dbo.fn_userid(ipdp.ItemID), -1)
...