Существует ли способ сделать, это короче, например, с помощью своего рода условного оператора в Проводит-sql?
IF @ParentBinaryAssetStructureId = -1
BEGIN
SET @ParentBinaryAssetStructureId = NULL
END
UPDATE BinaryAssets.BinaryAssetStructures
SET ParentBinaryAssetStructureId = @ParentBinaryAssetStructureId
WHERE BinaryAssetStructureId = @OriginalBinaryAssetStructureId
Использование Nullif ()
UPDATE BinaryAssets.BinaryAssetStructures
SET ParentBinaryAssetStructureId = NULLIF(@ParentBinaryAssetStructureId,-1)
WHERE BinaryAssetStructureId = @OriginalBinaryAssetStructureId
UPDATE BinaryAssets.BinaryAssetStructures
SET ParentBinaryAssetStructureId =
CASE ParentBinaryAssetStructureId
WHEN -1 THEN NULL
ELSE ParentBinaryAssetStructureId
END
WHERE BinaryAssetStructureId = @OriginalBinaryAssetStructureId
Дайте это Whirl
Торговый (условный) оператор в 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