где условие в зависимости от параметра

Я - sql новичок, я использую mssql2005

Мне нравится делать выбор с помощью условия, которое является в зависимости от входного параметра

Я попробовал это.

 WHERE CF.PROCESS_DATE = '2010-05-05' AND 
 CASE @CATEGORY_LEVEL
    WHEN 'L' THEN CAS.MCATEGORY_ID = '' AND CAS.SCATEGORY_ID = ''
    WHEN 'M' THEN CAS.SCATEGORY_ID = ''
 END

но не работал и произошел ошибка.

sql является трудным программисту новичка.. T.T

1
задан Sungguk Lim 10 May 2010 в 07:53
поделиться

2 ответа

Вы можете переписать условие так:

 WHERE CF.PROCESS_DATE = '2010-05-05' AND 
       (
           (@CATEGORY_LEVEL = 'L' AND CAS.MCATEGORY_ID = '' AND CAS.SCATEGORY_ID = '') OR
           (@CATEGORY_LEVEL = 'M' AND CAS.SCATEGORY_ID = '')
       )
1
ответ дан 3 September 2019 в 00:41
поделиться
WHERE CF.PROCESS_DATE = '2010-05-05' AND 
    (

    (@CATEGORY_LEVEL = 'L' AND CAS.MCATEGORY_ID = '' AND CAS.SCATEGORY_ID = '')

    OR

    (@CATEGORY_LEVEL = 'M' AND CAS.SCATEGORY_ID = '')

    )

(К счастью, ваш код работает на других базах данных (например, Postgres, MySQL), SQL Server не имеет первоклассной поддержки boolean, поэтому ваше выражение после THEN не приведет к типу boolean, следовательно, не будет работать в Sql Server

.
1
ответ дан 3 September 2019 в 00:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: