2016-05-10 4 views
-5

私は以下のクエリを持っています。 INクエリを置き換える必要がありますSQLサーバーでINクエリを置換

 SELECT * FROM TABLE1 
    WHERE 
     FIELD2 LIKE '%SEARCH_DATA%' 

     AND (CASE WHEN CONDITION1=TRUE THEN FIELD1 
       ELSE 'TEXT1' 
       END IN ('TEXT1','TEXT2')) 

INを同じ条件で置き換える方法を教えてください。

+1

実際に何をしようとしますか? – Wanderer

+0

あなたの要件は何ですか?混乱している – MusicLovingIndianGirl

+0

は 'IN'を* what *と置き換えますか? – Jamiec

答えて

1

これはに変換

SELECT * 
FROM TABLE1 
WHERE CONDITION1 <> TRUE -- CONDITION1 = FALSE 
    OR (FIELD1 = 'TEXT1' OR FIELD1 = 'TEXT2') 
1

、このような何かを試してみてください:

SELECT * FROM TABLE1 
WHERE FIELD2 LIKE '%SEARCH_DATA%' AND (CONDITION1 = FALSE OR FIELD1 IN ('TEXT1','TEXT2')) 
:CONDITIONのみNULL、TRUEまたはFALSEとないことができれば、我々はこれを簡略化することができ

SELECT * FROM TABLE1 
WHERE FIELD2 LIKE '%SEARCH_DATA%' 
AND 
(
    (CONDITION1 = TRUE AND FIELD1 IN ('TEXT1','TEXT2')) 
    OR CONDITION1 = FALSE 
    OR CONDITION1 IS NULL 
) 

(それ以外の場合は、CONDITION1 = FALSECONDITION1 = FALSE OR CONDITION1 IS NULLに置き換える必要があります)。

INなし(私はINとのより良い、それが好きだが):

SELECT * FROM TABLE1 
WHERE FIELD2 LIKE '%SEARCH_DATA%' 
AND (CONDITION1 = FALSE OR FIELD1 = 'TEXT1' OR FIELD1 = 'TEXT2')