SQL存储过程:如果变量不为空,则更新语句
我在存储过程中有一条更新语句,通常如下所示:
Update [TABLE_NAME]
Set XYZ=@ABC
有没有一种好方法可以仅在变量不为 null 或值 -1 时触发更新语句?
类似于 IF NOT EXISTS...INSERT
问题。
太感谢了。
I have an update statement in a stored procedure that looks generally like this:
Update [TABLE_NAME]
Set XYZ=@ABC
Is there a good way to only trigger the update statement if the variable is not null or the value -1?
Similar to an IF NOT EXISTS...INSERT
question.
Thank you so much.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用 T-SQL
IF
:查看 MSDN 文档。
Use a T-SQL
IF
:Take a look at the MSDN docs.
当您有很多更新时,另一种方法是使用 COALESCE:
Another approach when you have many updates would be to use COALESCE:
另一种方法是 ISNULL()。
ISNULL 和 COALESCE 之间的区别在于返回类型。 COALESCE 还可以采用 2 个以上的参数,并使用第一个不为空的参数。即
,需要注意的是,如果 COALESCE 没有非 NULL 的参数,它将引发异常,因此如果您只有两个参数并且两者都可以为 null - 请使用 ISNULL。
Yet another approach is ISNULL().
The difference between ISNULL and COALESCE is the return type. COALESCE can also take more than 2 arguments, and use the first that is not null. I.e.
One little note, if COALESCE hasn't argument that is not the NULL, it will throw an exception, so if you have just two arguments and both can be null - do use ISNULL.