如何在sql server 2000中使用case语句

时间:2012-07-04 02:54:58

标签: sql sql-server-2000

我有一个表标记,结构如下

pk id bigint 
marks_obtained

我有一个select语句如下:

SELECT CASE WHEN marks_obtained<25 THEN marks_obtained+'*'
ELSE marks_obtained
END

当marks_obtained小于25且仅大于25 {marks_obtained}

时,我想打印 {marks_obtained} * 之类的内容

当我执行语句时,我得到以下错误:

  

将数据类型varchar转换为bigint时出错。

我尝试使用强制转换和转换将结果转换为 varchar ,但没有成功 我该如何解决?

2 个答案:

答案 0 :(得分:4)

你可以这样做:http://www.sqlfiddle.com/#!3/ef9f4/4

select 

  i = case when i >= 1 then 
          convert(varchar(100), i) + '*'
      else
          convert(varchar(100), i)
      end 

from test;

当然,你也可以这样做:

select 

  i = convert(varchar(100),i) + case when i >= 1 then '*' else '' end

from test;

DDL:

create table test
(
  i int
  );

insert into test values(1);

输出:

|  I |
------
| 1* |

答案 1 :(得分:0)

为一个3岁的问题添加答案。我正在查询一个古老的MS SQL 7数据库,这是我使用CASE语句完成的:

 CASE WHEN
        (SELECT COUNT(*)
      FROM Table1
      WHERE Table2.code = Table1.code)  > 1 
         THEN 'SET' 
      ELSE 'PIECE' END AS UnitOfProduct