代码之家  ›  专栏  ›  技术社区  ›  Gopal

如何使用Case语句

  •  0
  • Gopal  · 技术社区  · 16 年前

    使用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 
    

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

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

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

    2 回复  |  直到 12 年前
        1
  •  4
  •   Martin Smith    16 年前

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

    例如

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

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

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

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

    按建议停止此问题 here Byte[]

        2
  •  1
  •   Mchl    16 年前

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