如何使用案例陈述

时间:2010-08-02 07:23:10

标签: mysql sql

使用C#.Net和MYSQL

我想使用像SQL

这样的CASE语句

查询

SELECT vehicleno, 
       brandname, 
       CASE 
         WHEN inexpire < 0 THEN 'Expired' 
         ELSE inexpire 
       END AS inexpire 
FROM   (SELECT Concat(plateno, vehicleno)   AS vehicleno, 
               brandname, 
               Datediff(inedate, Curdate()) AS inexpire 
        FROM   tb_car 
        WHERE  inedate < DATE_ADD(Curdate(), INTERVAL 30 DAY) 
        GROUP  BY vehicleno) AS tab1 

当我运行Query时,它将输出显示为

System.Byte[]代替“已过期”

在上面的查询中,inexpire是列值

我该如何解决这个问题......

需要查询帮助

2 个答案:

答案 0 :(得分:4)

我认为你需要为两种情况使用相同的数据类型

e.g。

case when inexpire < 0 then 'Expired' else 'inexpired' end as inexpire

 case when inexpire < 0 then 1 else inexpire end as inexpire

修改

实际上我只是在我的机器上进行了快速测试,这种数据类型的混合不会导致错误,但结果在MySQL Workbench中显示为Blob

SELECT  
cast( CASE  WHEN inexpire < 0 THEN 'Expired' ELSE inexpire END as char) as inexpire

按照建议here停止此问题。因此,这应该避免Byte[]问题

答案 1 :(得分:1)

IF(inexpire < 0, 'Expired',inexpire) AS inexpire