SQLite条件 [英] SQLite condition

查看:91
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆