一个数据表 id 用户名 密码 标签
id name password tag
1 中国 ok 2
2 美国 ok 3
3 北京 ok 4我使用存储过程来修改id=1的记录 把 中国 修改成 中国人 其它的不改create procedure update_user @id int,@name varchar(10),@password varchar(10),@tag int as begin
update 表 set
name=isnull(@name,name),
password=isnull(@password,password),
tag=isnull(@tag,tag)
where id=@id
end
go但是因为 tag 是int 类型 它默认是0 我一修改就把它改成0了 变成了id 用户名 密码 标签
id name password tag
1 中国人 ok 0
2 美国 ok 3
3 北京 ok 4怎么样 在存储过程中判断如果传来的字段是0 就不修改它
id name password tag
1 中国 ok 2
2 美国 ok 3
3 北京 ok 4我使用存储过程来修改id=1的记录 把 中国 修改成 中国人 其它的不改create procedure update_user @id int,@name varchar(10),@password varchar(10),@tag int as begin
update 表 set
name=isnull(@name,name),
password=isnull(@password,password),
tag=isnull(@tag,tag)
where id=@id
end
go但是因为 tag 是int 类型 它默认是0 我一修改就把它改成0了 变成了id 用户名 密码 标签
id name password tag
1 中国人 ok 0
2 美国 ok 3
3 北京 ok 4怎么样 在存储过程中判断如果传来的字段是0 就不修改它
begin
把修改代码放进来就可以了 如果不等于0 就修改 等于0 不做任何操作
end
具体不等于0 上面那种!=0我认为可以 但我平时都用 <>0 来判断 不等于0
begin
if @tag=0
begin
update 表 set
name=isnull(@name,name),
password=isnull(@password,password)
where id=@id
end
else
begin
update 表 set
name=isnull(@name,name),
password=isnull(@password,password),
tag=isnull(@tag,tag)
where id=@id
end
end
go
有没有一个办法就像 isnull判断如果是空就不更新它。
update 表 set
name=isnull(@name,name),
password=isnull(@password,password),
tag=case when @tag=0 then tag else @tag end
where id=@id
end
go