2

既存の値に応じて「WHERE 句で条件付き 'and'」を使用できるかどうかは誰にもわかりませんか??、次のようなクエリがあります。

@declare idProduct int = 1,
@declare idProducType int = null

select 
    tbl.idProduct, tbl.idProductType, tbl.ProductName, tbl.ProductPrice 
from MyTable tbl 
where tbl.idProduct = 1 
    <IF idProductType is not null>
        and tbl.idProductType = SOMEVALUE
    <ELSE>
        do nothing
    <ENDIF>

条件が false の場合に null 値を取得するのではなく、常にこのクエリからデータを取得する必要があります。SQL Server 2008 でこれを行うにはどうすればよいですか ???

4

3 に答える 3

2

これがあなたが望むものだと思います:

select 
tbl.idProduct, tbl.idProductType, tbl.ProductName, tbl.ProductPrice 
from MyTable tbl 
where tbl.idProduct = 1 and (tbl.idProductType = @idProducType or @idProducType is null)
于 2013-02-11T19:33:23.217 に答える
0
....
where tbl.idProduct = 1 
  and (CASE WHEN idProductType is not null and tbl.idProductType = SOMEVALUE Then <something> END) = <something>
/
于 2013-02-11T19:35:05.467 に答える
0

これはあなたのために働くはずです:

@declare idProduct int = 1,
@declare idProducType int = null

SELECT
    tbl.idProduct, tbl.idProductType, tbl.ProductName, tbl.ProductPrice 
FROM MyTable tbl 
WHERE tbl.idProduct = 1 
    AND (CASE WHEN idProductType is not null THEN tbl.idProductType = SOMEVALUE
    END)
于 2013-02-11T19:33:09.650 に答える