Оператор case в условии условия в SQL Server - PullRequest
0 голосов
/ 10 декабря 2018

Я хочу оптимизировать приведенный ниже запрос, заменив многие условия 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
...