我正在寻找变量的字匹配 - @TextSearchWord
我有一个@SearchCriteria变量,可能有5个值!
根据该值,我选择哪个字段我必须搜索我的字!
- 所以我需要级联" CASE"声明在" WHERE"只有声明,并且像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
)
答案 0 :(得分:5)
您不需要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)
...
)
答案 1 :(得分:3)
SQL WHERE clauses: Avoid CASE, use Boolean logic
....
AND(
( @SearchCriteria = 'DictNM' AND WordDictNM = @TextSearchWord )
OR ( @SearchCriteria = 'DictNMAlif' AND WordDictNMAlif = @TextSearchWord )
)