2010-01-18 64 views
5

有没有办法做到这一点较短,例如在Transact-sql中使用某种条件运算符?Transact-sql中的条件运算符

IF @ParentBinaryAssetStructureId = -1 
BEGIN 
    SET @ParentBinaryAssetStructureId = NULL 
END 

UPDATE BinaryAssets.BinaryAssetStructures 
SET  ParentBinaryAssetStructureId = @ParentBinaryAssetStructureId 
WHERE BinaryAssetStructureId = @OriginalBinaryAssetStructureId 

回答

7

使用NULLIF()

UPDATE BinaryAssets.BinaryAssetStructures 
SET  ParentBinaryAssetStructureId = NULLIF(@ParentBinaryAssetStructureId,-1) 
WHERE BinaryAssetStructureId = @OriginalBinaryAssetStructureId 
2
UPDATE BinaryAssets.BinaryAssetStructures 
SET  ParentBinaryAssetStructureId = 
    CASE ParentBinaryAssetStructureId 
    WHEN -1 THEN NULL 
    ELSE ParentBinaryAssetStructureId 
    END 
WHERE BinaryAssetStructureId = @OriginalBinaryAssetStructureId 

给一个抡

4

三元(条件)运算符在C一样的语言:

x = doSomething ? 5 : 7 

会这样写在SQL中:

SELECT @x = CASE WHEN @doSomething = 1 THEN 5 ELSE 0 END 

可以有多个的情况下(当子句):

SELECT @x = CASE WHEN @doSomething = 1 THEN 5 WHEN @somethingElse = 1 THEN 20 ELSE 0 END