mysql - 有条件地选择 MySQL 中的字段或静态字符串

标签 mysql select conditional-statements

我有两个表 itemssale_invoice_items , 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

如果商品过期了,则返回字段中的过期日期,否则只写“-”

项目名称返回正常,但过期时间不是,而是返回一个字节数组。

我做错了什么?

最佳答案

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

实现这一目标。

如果您想要返回一个日期,那么您需要决定您期望“其他”情况的值是什么:一个虚拟日期,一个空......?

关于mysql - 有条件地选择 MySQL 中的字段或静态字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16749324/

相关文章:

function - 使用 execute (plpgsql) 创建一个函数

java - 以方面切入点执行为条件

php - 如何排序和添加我的数据库记录?

php - 需要在 PHP 中使用 SQL 表达式的帮助

c# - 获取所有数据的一个查询与 300 个特定查询

javascript - Vue.js:类切换的条件

php - 循环不会停止

mysql - 我应该重新计算表中的大量数据,还是应该将其保存在数据库中?

mysql - 如何在不丢失所有行的情况下获得特定列的总和?

python - webdriver.support.select - Select 不与元素交互