如果IS_CLOSED为真,则显示“已关闭”

时间:2013-01-30 19:21:38

标签: mysql sql

如果is_closed从查询中返回true,如何告诉查询将closing_time设置为closed,而不是显示行中的实际内容...如23:00:00

我试过

AND IF(is_closed = 1, 1, 0) closing_time = 'closed'

但结果是

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   临近' closing_time ='已关闭' GROUP BY venues.VENUE_NAME'在第27行

谢谢!

修改 closing_time是一个日期字段。

2 个答案:

答案 0 :(得分:2)

在您的字段列表中添加条件语句:

SELECT 
  < some column(s) here >, 
  CASE WHEN is_closed = 1 
       THEN 'closed' 
       ELSE closing_time END AS CLOSING_TIME_OR_CLOSED
...

可在此处找到经过测试的示例:http://sqlfiddle.com/#!2/108c1/2

与IF语句相反,CASE语句是ANSI SQL,这意味着您可以在任何实现ANSI标准的RDBMS上运行查询。

答案 1 :(得分:1)

如果closing_time是数据类型TIME,那么您可以在SELECT列表中使用这样的表达式:

SELECT IF(is_closed=1,'closed',TIME_FORMAT(closing_time,'%H:%i')) AS closing_time

请注意,此表达式将返回一个字符串(VARCHAR数据类型)。