【问题标题】:how to cascade CASE sql inside the condition WHERE如何在条件 WHERE 中级联 CASE sql
【发布时间】:2015-06-28 20:49:18
【问题描述】:
  • 我正在为变量搜索词匹配 - @TextSearchWord

  • 我有一个可能有 5 个值的 @SearchCriteria 变量!

  • 根据该值,我从哪个字段中选择我必须搜索我的单词!

-所以我只需要在“WHERE”语句中级联“CASE”语句,就像在 select 语句中的其他示例一样!

SELECT COUNT(WordID) AS WordQty
FROM itinfo_QuranArabicWordsAll
WHERE (SiteID = @SiteID) 
AND (QuranID = @QuranID) 
AND (SuraID BETWEEN @StrtSuraID AND @EndSuraID) 
AND (VerseOrder BETWEEN @StrtVerseSortOrder AND @EndVerseSortOrder)
AND ( 
        -- here is my problem : 
        CASE 
          WHEN (@SearchCriteria = 'DictNM') THEN  (WordDictNM = @TextSearchWord )
          ELSE CASE 
                 WHEN (@SearchCriteria = 'DictNMAlif') THEN (WordDictNMAlif = @TextSearchWord)  
                 ...
               END        
        END
    )

【问题讨论】:

  • 我不是 100% 了解 tsql,但是,CASE 结构通常是:CASE WHEN <condition1> THEN <result1> WHEN <condition2> THEN <condition2> ... <repeat as needed> END。也就是说,如果您对单个变量有多个值,通常 CASE 还允许:CASE <variable> WHEN <value1> THEN <result1> WHEN <value2> THEN <result2> .... END ... 可能对您有用吗?
  • This 可能会有所帮助。 CASE 表达式可以嵌套。

标签: sql sql-server tsql


【解决方案1】:

您不需要CASE 声明。

SELECT     COUNT(WordID) AS WordQty
FROM         itinfo_QuranArabicWordsAll
WHERE (SiteID = @SiteID) 
    AND (QuranID = @QuranID) 
    AND (SuraID BETWEEN @StrtSuraID AND @EndSuraID) 
    AND (VerseOrder BETWEEN @StrtVerseSortOrder AND @EndVerseSortOrder)
    AND (
        (@SearchCriteria = 'DictNM' AND WordDictNM = @TextSearchWord )
        OR (@SearchCriteria = 'DictNMAlif' AND WordDictNMAlif = @TextSearchWord)
        ...
)

【讨论】:

  • 好的,谢谢,我会采用这种方法,我认为 case 在我的问题中不起作用!!
【解决方案2】:

SQL WHERE clauses: Avoid CASE, use Boolean logic.

....
AND(
    ( @SearchCriteria = 'DictNM'     AND WordDictNM     = @TextSearchWord )   
 OR ( @SearchCriteria = 'DictNMAlif' AND WordDictNMAlif = @TextSearchWord ) 
)

【讨论】:

    猜你喜欢
    • 2023-01-05
    • 1970-01-01
    • 1970-01-01
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 2018-03-24
    相关资源
    最近更新 更多