使用C#.Net和MYSQL

我想使用CASE语句,例如SQL

询问

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


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

System.Byte[]而不是“过期”

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

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

需要查询帮助

最佳答案

我认为您在两种情况下都需要使用相同的数据类型

例如

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[]问题

09-15 14:20