2012-07-04 94 views
0

我有一个表stdmarks与结构如下图如何使用的情况下用select语句在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}

当我执行该语句我获得以下错误:

Error converting data type varchar to bigint.

我试过的结果转换为使用演员和转换,但没有成功 我该如何解决VARCHAR

+1

你能解释一下你尝试过(如显示的代码),并解释什么是“没有成功”的手段(例如实际的错误信息)? –

回答

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* | 
+0

谢谢@迈克尔布恩它的工作 – user1500383

+0

@ user1500383:如果这个答案的工作和解决了你的问题,那么你应该[标记答案为接受](http://meta.stackexchange.com/q/5234/153998)。这是正确和有礼貌的事情,这将显示你对花时间帮助你的人的赞赏。 –

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 
相关问题