2016-03-29 18 views
1

selectステートメントをフィルタリングして値を取得する必要があるのは、ビット値がtrueです。たとえばSQLフィルターSELECTステートメント

DECLARE 
@Value AS NVARCHAR(20) = 'Some Value' 
@BIT AS BIT = 1, 
@Stuff AS NVARCHAR(20) = 'Stuff' 

SELECT 
    @Stuff, 
    IF @BIT = 1 BEGIN @Value END ELSE BEGIN '' END 

これは基本的には何か?私はその値が真であればそれを選択したいだけです。私は複数のチェックボックスを持っており、ユーザーがチェックボックスを1つ選択した場合、データはそのデータを元に戻すだけで、チェックされているかどうかを確認するためにビットを使用しています。事前に感謝

+0

これらのチェックボックスを持つアプリケーションのコードは、これを処理するよりもクエリに適しています。 –

答えて

1

使用CASEないIF

SELECT 
    @Stuff, 
    CASE WHEN @BIT = 1 THEN @Value ELSE '' END 

または

CASE @BIT WHEN 1 THEN @Value ELSE '' END 
+0

ありがとうアレックス、この場合に動作するはずです。私はレポートを作成するためにデータを使用していますので、名前のない列は無視するだけです。 – Holmes

0

それはあなたがやろうとしているので、私はあなたにいくつかのアプローチを与えるものを少し不明ですselectステートメントを制限する場合は、次の操作を実行できます。

SELECT ... 
FROM ... 
WHERE myBitField = 1 

や、あなたのビットフィールドが渡されてい変数であれば、あなたが行うことができます:

SELECT ... 
FROM ... 
WHERE myBitField = @BIT 

あなたの選択結果を制限したくない場合は、case文を使用することができます。

SELECT CASE WHEN @BIT = 1 THEN @Value ELSE '' END as BitResult 
FROM ... 
関連する問題