SQLite条件 [英] SQLite condition
本文介绍了SQLite条件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我只想将此函数查询从navicat转换为sqlite查询,
从tbl_sample选择* 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')
)
解决方案
尝试此查询:
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'))
)
使用DNF到CNF重写规则以减少括号/嵌套的级别:
SELECT *
FROM tbl_sample
WHERE ID = 1
AND(RECEIPT_MODE& 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'))
I just want to convert this function query from navicat to sqlite query,
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') )
解决方案Try this query:
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')) )
Use the DNF to CNF rewrite rule to reduce the level of parens/nesting:
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') )
这篇关于SQLite条件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文