2011-10-25 5 views
0

これはSQLで可能か、ストアドプロシージャを記述する必要があるかわかりませんが、以下のようにISNULL関数を使用しようとしています。パラメータ@skuは、私はすべてのSKUがテーブルに戻すためにSELECT文を使用していnullである:ISNULL、SQL、select文を2番目のパラメータとして使用

SELECT  GooglePrice.idGooglePrice, GooglePrice.idProduct, products.sku, products.wholeprice, products.price as CurrentHMMPrice, GooglePrice.bestPrice, GooglePrice.link, GooglePrice.title, GooglePrice.description, GooglePrice.ourPrice as PriceCompHMMPrice, 
         GooglePrice.searchType, GooglePrice.shippingCost, GooglePrice.cheapestOrder, GooglePrice.timeStamp, 
    'ShippingCostNew' = CASE 
     WHEN GooglePrice.shippingCost = -1 THEN 'N/A' 
     WHEN GooglePrice.shippingCost = 0 THEN 'Free Shipping' 
     WHEN GooglePrice.shippingCost > 0 Then cast(GooglePrice.shippingCost as varchar) 
     END 
FROM   GooglePrice INNER JOIN 
         products ON GooglePrice.idProduct = products.idProduct 
WHERE  (products.supplierCode in (@SupplierCode)) AND ISNULL((products.sku like '%'[email protected]+'%'), (products.sku in (select sku from products where products.sku))) 

ORDER BY GooglePrice.idGooglePrice 
+0

ため@SupplierCodeでCSVを持っていないと仮定します。 – Standage

答えて

3

はOR

WHERE 
    (products.supplierCode in (@SupplierCode)) 
    AND 
    (products.sku like '%'[email protected]+'%' OR @SupplierCode IS NULL) 

と容易になるだろうこれはありません、あなたの意図でしたか?

 AND 
    products.sku like ISNULL('%'[email protected]+'%',products.sku) 

注:

  • 有数のワイルドカードを最適化することができないとインデックスを使用しません。
  • 私はあなたが私は、このパラメータがnullの場合、すべてのSKUを戻すしたいこのproducts.supplierCode in (@SupplierCode)
+1

+1 - いつものようにサクシンントで有益です – JNK

+0

元気いっぱいです。 – Standage

1

がそれをovercomplicateしないでください。

あなたWHERE句を作成します。

WHERE  
    ((products.supplierCode in (@SupplierCode) 
     AND 
    (products.sku like '%'[email protected]+'%')) 
OR (@suppliercode IS NULL) 

私は推測しているので、あなたが本当にあなたのロジックを説明していませんが、アイデアはNULL比較のために別々のチェックを入れることです。

0
SELECT GooglePrice.idGooglePrice, GooglePrice.idProduct, products.sku, products.wholeprice, products.price as CurrentHMMPrice, GooglePrice.bestPrice, GooglePrice.link, GooglePrice.title, GooglePrice.description, GooglePrice.ourPrice as PriceCompHMMPrice, GooglePrice.searchType, GooglePrice.shippingCost, GooglePrice.cheapestOrder, GooglePrice.timeStamp, 
    'ShippingCostNew' = CASE 
     WHEN GooglePrice.shippingCost = -1 THEN 'N/A' 
     WHEN GooglePrice.shippingCost = 0 THEN 'Free Shipping' 
     WHEN GooglePrice.shippingCost > 0 Then cast(GooglePrice.shippingCost as varchar) 
     END 
FROM GooglePrice INNER JOIN 
     products ON GooglePrice.idProduct = products.idProduct 
WHERE (products.supplierCode in (@SupplierCode)) AND (@SupplierCode is null or products.sku like '%'[email protected]+'%') 
ORDER BY GooglePrice.idGooglePrice 
関連する問題