2010-01-18 4 views
5

Existe-t-il un moyen de réduire cette longueur, par exemple en utilisant une sorte d'opérateur conditionnel dans Transact-sql?Opérateur conditionnel dans Transact-sql

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

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

Répondre

7

UTILISATION 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 

Donnez qu'un tourbillon

4

L'opérateur ternaire (conditionnel) dans c comme langues:

x = doSomething ? 5 : 7 

serait écrit comme ceci en SQL:

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

Il peut y avoir plusieurs cas (lorsque les clauses):

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