2016-07-14 1 views
1

nullである場合にのみ、私はこのSPを持っている:SQLのUPDATEフィールドフィールドは

ALTER PROCEDURE [dbo].[UpdateContractInfo](@UserGroupId int, @Quantity int, @ContractName varchar(150)) 
AS 
BEGIN 

    UPDATE [contract] 
    SET totalUsers = @Quantity, contractName = @ContractName 
    WHERE userGroupId = @UserGroupId 
END 

私が最初contractName列をチェックするために、そのクエリを少し高めにしたいです。 カラムがnullの場合、contractNameのupdateを続行します。それ以外の場合は、そのフィールドの更新をスキップします。 totalUsersフィールドは一方向に更新する必要があります。

おかげ

答えて

4

使用CASE STATEMENT

はあなたが試すことができます。この

UPDATE [contract] 
SET totalUsers = @Quantity, 
contractName = CASE WHEN contractName IS NULL THEN @ContractName ELSE contractName END 
WHERE userGroupId = @UserGroupId 
3

かを試してみてくださいISNULLパラメータがISNULL()機能

UPDATE [contract] 
SET totalUsers = @Quantity, 
contractName = ISNULL(contractName, @contractName) 
WHERE userGroupId = @UserGroupId 
+1

切り替えるべきですか? –

+2

ええ、そうですよ!一定。ありがとう! – xbb