2013-07-03 18 views
20

私はBitValue Columnを持つSQL Server 2000にテーブルを持っています。ただし、SQL Server Management StudioではTrue/Falseと表示されています。 Select * from Tablenameを実行すると、BitValue列の値がTrue/Falseとして返されます。 True/Falseではなく、ビット(1/0)として値を返すようにするにはどうすればよいですか? ヘルプは本当に感謝しますか?戻り値のビット値は1/0であり、SQL ServerではTrue/Falseではありません。

+0

あなたはブール値の表示形式を懸念しているのはなぜSSMSで? –

+0

私はこれらの値を使用しています。いくつかの作業をして、値を再びそのテーブルに挿入しています。しかし、ビット値のように何かが1または0しか受け付けないというエラーをスローするので、True/Falseとして値を挿入することはできません。 – Butters

+1

'True'はSSMSが値' 1'の 'bit'型の列を表示する方法です。 C#クライアントは値 'SqlBoolean.True'を受け取ります。 – Andomar

答えて

16

必要な出力を生成するようにクエリを変更します。

はintにそれらをキャストしてみてください。

select cast(bitFlag as int) 

または、あなたが好きなら、caseを使用します。

select (case when bitFlag = 0 then 0 else 1 end) 
31

は多分有用であろう、このスクリプトを試してみてください。

SELECT CAST('TRUE' as bit) -- RETURN 1 
SELECT CAST('FALSE' as bit) --RETURN 0 

とにかく、私は常に1または0の値を使用します(TRUEまたはFALSEではありません)。あなたの例に続いて、更新スクリプトは次のようになります。

Update Table Set BitField=CAST('TRUE' as bit) Where ID=1 
4

これは、この例のようにCASE WHENを使用して0/1に変更することができます:

SELECT 
CASE WHEN SchemaName.TableName.BitFieldName = 'true' THEN 1 ELSE 0 END AS 'bit Value' 
FROM SchemaName.TableName 
関連する問題