2012-07-04 120 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 
相關問題