0

以下のような構造のテーブルstdmarksがあります

pk id bigint 
marks_obtained

以下のような select ステートメントがあります。

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

marks_obtained が 25 未満の場合は{marks_obtained}*のように出力し、25 より大きい場合は{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 に答える