使用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是列值
我该如何解决这个问题......
需要查询帮助
答案 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