如果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
是一个日期字段。
答案 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数据类型)。