Условный оператор в Transact-sql - PullRequest
5 голосов
/ 18 января 2010

Есть ли способ сделать это короче, например, используя какой-то условный оператор в Transact-sql?

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

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

Ответы [ 3 ]

7 голосов
/ 18 января 2010

ИСПОЛЬЗОВАНИЕ NULLIF ()

UPDATE  BinaryAssets.BinaryAssetStructures 
SET     ParentBinaryAssetStructureId = NULLIF(@ParentBinaryAssetStructureId,-1)
WHERE   BinaryAssetStructureId = @OriginalBinaryAssetStructureId
4 голосов
/ 18 января 2010

Тернарный (условный) оператор на 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
2 голосов
/ 18 января 2010
UPDATE  BinaryAssets.BinaryAssetStructures 
SET     ParentBinaryAssetStructureId =
   CASE  ParentBinaryAssetStructureId  
     WHEN -1 THEN NULL
     ELSE ParentBinaryAssetStructureId
   END
WHERE   BinaryAssetStructureId = @OriginalBinaryAssetStructureId

Дайте этому водовороту

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...