mysql更改过滤器列

时间:2016-12-28 16:45:16

标签: mysql sql database rdbms

这是我的查询

    select op.*,o.customers_name from orders_payment op, ".TABLE_ORDERS. " o where op.orders_id=o.orders_id  AND 
o.customers_id='".$customers['customers_id']."' 
AND op.confirm_payment='1' 
AND (received_date BETWEEN '".$fromdate."' AND '".$todate."') order by pay_id desc

我要修改的内容是' payment_date'列过滤器。如果此列为空,请将其替换为' payment_date'否则保持不变。 我尝试了一个转换声明,但没有取得任何成功。 提前谢谢

1 个答案:

答案 0 :(得分:2)

一种方法使用case

((received_date BETWEEN (case when '".$fromdate."' = '' then pament_date else '".$fromdate."' end) AND '".$todate."') or
 (payment_date BETWEEN (case when '".$fromdate."' = '' then pament_date else '".$fromdate."' end) AND '".$todate."')
)

在此过程中,我强烈建议您使用多于SQL字符串的参数。至少,您可以传递NULL并使用coalesce()而不是case