0
select id,status
from request

上記のクエリのステータス列は、いくつかの整数値を返します。整数値の代わりに文字列値を返す条件を設定する必要があります。

例: ステータス 1 の場合は「新規」を返し、ステータスが 2 の場合は「承認済み」を返します。

4

5 に答える 5

4

case ステートメントを使用します。

select 
    id, 
    case status
        when 1 then 'New' 
        when 2 then 'Approved' 
    end as status 
from 
    request 

ステータス値の数値と対応するテキスト文字列を含むルックアップ テーブルを用意することをお勧めします。

select 
    req.id, 
    stat.value as status
from 
    request as req inner join status as stat 
        on req.status = stat.id
于 2012-08-06T14:22:53.730 に答える
3

CASEそのために使用できます

select id,
       case status
          when 1 then 'New'
          when 2 then 'Approved'
       end as statusText
from request
于 2012-08-06T14:22:02.440 に答える
1

私は、テーブルに保存され、その意味についての手がかりがない不思議な整数値を軽蔑します。

私のソリューションは、前もってもう少し手間がかかりますが、長期的にはそれだけの価値があります。

StatusValues の新しいテーブルを作成することから始めます。

StatusValues
------------
Status INT PRIMARY KEY
StatusValue VARCHAR(20)

そのテーブルにデータを入力します。

Status    StatusValue
------    -----------
1         New
2         Approved

Request テーブルからこのテーブルへの外部キー関係を作成します。

ALTER TABLE request
    ADD CONSTRAINT FK_Request_StatusValues FOREIGN KEY (status)
    REFERENCES StatusValues (status);

最後に、クエリを記述します。

SELECT r.id, sv.StatusValue
    FROM request r
        INNER JOIN StatusValues sv
            ON r.status = sv.status;

以前は不可解だったrequest.status列は、データベース内で適切に文書化および管理されるようになりました。

于 2012-08-06T14:29:19.007 に答える
1
select id, case when status = 1 then 'NEW' when status = 2 then 'Approved' else 'Undefined' end as status
from request
于 2012-08-06T14:23:00.343 に答える
0

SQL Server の正確な構文がわかりません...

ただし、mySQL に使用できる構文は次のとおりです (バリアントが機能するはずです)。

注: これは、選択肢が 2 つしかないことを前提としています。選択肢が 2 つ以上ある場合は、case キーワードを使用します。

select id, if(status = 1, "New", "Approved) from request
于 2012-08-06T14:25:11.470 に答える