Я хочу оптимизировать приведенный ниже запрос, заменив многие условия OR, используя операторы case в условии where.Как можно написать оператор CASE
для условий ниже, где условия, потому что условия не должны выполняться, когда в параметры передаются нулевые значения?
DECLARE @ALLSUBFORM VARCHAR(MAX)
DECLARE @LAN VARCHAR(10) = 'EN'
DECLARE @SUBFORMAT VARCHAR(50) = 'MTR'
DECLARE @CASNUM VARCHAR(20)
SELECT DISTINCT
TP.F_PRODUCT AS ID,
TP.F_PRODUCT_NAME AS [NAME]
FROM
PDF TP
WHERE
(@LAN IS NULL OR TP.F_LAN = @LAN OR @LAN = '-1')
AND (@SUBFORMAT IS NULL OR @SUBFORMAT = '-1' OR TP.F_SUBFORMAT IN (SELECT SUBFORMAT FROM SUBFORMATTEMP))
AND (@CASNUM IS NULL OR REPLACE(LTRIM(RTRIM(REPLACE(CASN.F_DATA,'¿',' '))),' ','; ') LIKE @CASNUM OR REPLACE(LTRIM(RTRIM(REPLACE(TP.F_CAS_NUMBERS,'¿',' '))),' ','; ') LIKE @CASNUM)
END