我有一个表标记,结构如下
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 ,但没有成功 我该如何解决?
答案 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