0

我有一个表stdmarks,其结构如下

pk id bigint 
marks_obtained

我有一个选择语句如下:

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

当marks_obtained小于25并且如果大于25时,我想打印类似{marks_obtained}*的东西{marks_obtained}

当我执行语句时,出现以下错误:

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

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

4

2 回答 2

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* |
于 2012-07-04T03:18:36.410 回答
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
于 2015-11-10T01:50:53.623 回答