私は、SQL Serverの次のような状況している:私たちは3つの値1、2と3でいっぱいの列を持っているのは、はい、その1つの手段を想定テーブルでSQL Serverの - 値を示すように、異なる値
をしてみましょう2はnoを意味し、3は多分を意味する。
この列を選択する方法はありますか?はい、いいえ、おそらく1,2,3の代わりに値を示していますか?
私は、SQL Serverの次のような状況している:私たちは3つの値1、2と3でいっぱいの列を持っているのは、はい、その1つの手段を想定テーブルでSQL Serverの - 値を示すように、異なる値
をしてみましょう2はnoを意味し、3は多分を意味する。
この列を選択する方法はありますか?はい、いいえ、おそらく1,2,3の代わりに値を示していますか?
はい..youが
SELECT
CASE test_column
WHEN 1THEN 'YES'
WHEN 2 THEN 'NO'
ELSE 'MAY BE'
END as test_op
FROM table1
、あなたは次のようになりケースを使用することができることを行うためにCASE式を使用することができますこの
select
case when field = 1 then 'YES'
when field = 2 then 'NO' else 'MAYBE' end FieldName
from table
注のようなもの:1または2以外の値は、あなたが別のケースを追加することができ、多分になります他の回答に見case/when
書類番号3
以下のようにあなたがはい、それは可能である。このためのケースを使用することができます
select
case value
when 1 then 'yes'
when 2 then 'no'
when 3 then 'maybe'
end
from
table
代替の値(1
/2
/3
)の記述を含む参照テーブルを作成することです。
このようにすることの最大の利点は、これを複数の場所で使用すると、すべてを一度に更新できることです。
dbo.curValDesc
テーブルは、作成/作成する必要のある参照テーブルです。あなたの消費しているクエリは、一番下のものと同じように見えます。
create table dbo.existingData
(
rowID int
, curVal tinyint --the column with values of 1/2/3
)
insert into dbo.existingData
values (1, 1)
, (2, 2)
, (3, 3)
, (4, 3)
, (5, 2)
, (6, 1)
, (7, 1)
create table dbo.curValDesc
(
curVal tinyint
, curValDesc varchar(10)
)
insert into dbo.curValDesc
values (1, 'Yes')
, (2, 'No')
, (3, 'Maybe')
select ed.rowID
, cvd.curValDesc
from dbo.existingData as ed
inner join dbo.curValDesc as cvd on ed.curVal = cvd.curVal
ケース式を使用するよりも、テキスト値を保持するルックアップテーブルを作成することができます。次に、それに参加してテキスト列を表示するだけです。そうすれば、別の値を追加したり、コードを変更する必要がないものを追加したりするだけで、テーブルに別の値を追加するだけで、他のすべての値が機能します。 –