2016-10-07 13 views
1

は、私はちょうどSQLiteのクエリにNavicatはからこの機能クエリを変換したい、SQLiteの条件

Select * from tbl_sample where ID = 1 And IF (
     RECEIPT_MODE = 'MANUAL', 
     DATE(a.MANUAL_COLLECTION_DATE) = DATE('2016-08-10 04:18:00'), 
     DATE(TPAY_ISSUED_DATE) = DATE('2016-08-10 04:18:00') 
    ) 

答えて

1

は、この文字列で検索してください:

SELECT * 
FROM tbl_sample 
WHERE ID = 1 AND 
(
    (RECEIPT_MODE = 'MANUAL' AND 
    DATE(a.MANUAL_COLLECTION_DATE) = DATE('2016-08-10 04:18:00')) OR 
    (RECEIPT_MODE <> 'MANUAL' AND 
    DATE(TPAY_ISSUED_DATE) = DATE('2016-08-10 04:18:00')) 
) 

減らすためCNFの書き換えルールにDNFを使用します括弧内/ネスティングのレベル:

SELECT * 
FROM tbl_sample 
WHERE ID = 1 
AND (RECEIPT_MODE <> 'MANUAL' OR 
     DATE(a.MANUAL_COLLECTION_DATE) = DATE('2016-08-10 04:18:00')) 
AND (RECEIPT_MODE = 'MANUAL' OR 
     DATE(TPAY_ISSUED_DATE) = DATE('2016-08-10 04:18:00')) 
+0

ありがとうございます。できます。 –

0

標準そのIFのSQLメカニズムは、CASE expression

Select * from tbl_sample where ID = 1 And CASE 
     WHEN RECEIPT_MODE = 'MANUAL' 
     THEN DATE(a.MANUAL_COLLECTION_DATE) = DATE('2016-08-10 04:18:00') 
     ELSE DATE(TPAY_ISSUED_DATE) = DATE('2016-08-10 04:18:00') 
    END