select id,status
from request
上記のクエリのステータス列は、いくつかの整数値を返します。整数値の代わりに文字列値を返す条件を設定する必要があります。
例: ステータス 1 の場合は「新規」を返し、ステータスが 2 の場合は「承認済み」を返します。
select id,status
from request
上記のクエリのステータス列は、いくつかの整数値を返します。整数値の代わりに文字列値を返す条件を設定する必要があります。
例: ステータス 1 の場合は「新規」を返し、ステータスが 2 の場合は「承認済み」を返します。
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
CASE
そのために使用できます
select id,
case status
when 1 then 'New'
when 2 then 'Approved'
end as statusText
from request
私は、テーブルに保存され、その意味についての手がかりがない不思議な整数値を軽蔑します。
私のソリューションは、前もってもう少し手間がかかりますが、長期的にはそれだけの価値があります。
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
列は、データベース内で適切に文書化および管理されるようになりました。
select id, case when status = 1 then 'NEW' when status = 2 then 'Approved' else 'Undefined' end as status
from request
SQL Server の正確な構文がわかりません...
ただし、mySQL に使用できる構文は次のとおりです (バリアントが機能するはずです)。
注: これは、選択肢が 2 つしかないことを前提としています。選択肢が 2 つ以上ある場合は、case キーワードを使用します。
select id, if(status = 1, "New", "Approved) from request