2012-02-03 50 views
0

我可以寫這樣的查詢嗎?如何在SQL Server中對SQL更新查詢使用邏輯OR運算符?

我想更新表格,但我不確定需要更新多少個列以及可以應用多少個條件。我完全依賴於SQL參數。

這裏是我的樣本SQL查詢:

CREATE PROCEDURE UpdateRecords 
(
@Category AS VARCHAR(20)='', 
@Manufature AS VARCHAR(20)='', 
@Model AS VARCHAR(20)='', 

@CategoryNew AS VARCHAR(20), 
@ManufatureNew AS VARCHAR(20), 
@ModelNew AS VARCHAR(20), 

@CategoryOld AS VARCHAR(20), 
@ManufatureOld AS VARCHAR(20), 
@ModelOld AS VARCHAR(20) 

) 
AS 

UPDATE table19999 
SET (@category='' OR [email protected]), 
(@Manufature='' OR [email protected]), 
(@Model='' OR [email protected]) 
WHERE (@category='' OR [email protected]) AND 
(@Manufature='' OR [email protected]) AND 
(@Model='' OR [email protected]) 

任何幫助嗎?

+0

的編碼是錯誤的,請說你需要做什麼。何時更新類別字段? – vulkanino 2012-02-03 09:08:36

+0

我猜如果@ category =''不會改變其他類別,如果category = @ categoryold set category = @ categorynew – 2012-02-03 09:20:51

+0

SQL中的工作單位是行,而不是列。 – onedaywhen 2012-02-03 11:29:57

回答

1
update table199999 

set 
    category=case when @category='' then category else @CategoryNew end, 
    manufacture=case when @manufature='' then manufacture else @manufactureNew end 

0

您可以在使用狀態..

UPDATE TABLE 
SET (MANUFACTURE = @MANUFACTURE, CATEGORY = @CATEGORY) 
WHERE MANUFACTURE IN (@OPTION1, @OPTION2) 
OR CATEGORY IN (@CATEGORY1, @CATEGORY2)