2010-01-18 24 views
5

C'è un modo per farlo più breve, ad esempio usando un qualche tipo di operatore condizionale in Transact-sql?Operatore condizionale in Transact-sql

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

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

risposta

7

USO 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 

dare quel un vortice

4

Il ternario operatore (condizionale) in c come lingue:

x = doSomething ? 5 : 7 

dovranno essere scritte in questo in SQL:

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

Ci possono essere molteplici casi (quando clausole):

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