在MySQL中有条件地选择字段或静态字符串

时间:2013-05-25 11:59:14

标签: mysql select conditional

我有两个表商品 sale_invoice_items ,商品有一个标志,指示商品是否过期,而sale_invoice_items有失效日期。 现在做SELECT时返回我正在做的发票:

select  items.name as f1,  IF( items.expiry =TRUE,  sale_invoice_items.expiry, '-') as f2    
from sale_invoices, sale_invoice_items, items where  sale_invoices.id = 3 and sale_invoice_items.invoice_id = sale_invoices.id and items.id = sale_invoice_items.item_id

因此项目到期,然后在字段中返回到期日期,否则,只需写“ - ”

项目名称返回ok,但是到期时不是,它返回一个字节数组。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

select
....
, case when items.expiry = true then 
     sales_invoice_items.expiry 
else 
     '-' 
end as expiry
....
from
....

您需要确保

的数据类型
sales_invoice_items.expiry

'-'

是相同的即字符。您可以在此处使用转换功能

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

实现这一目标。

如果你想要一个返回日期,那么你需要决定你对“其他”案例的期望值:虚拟日期,空值....?