gpt4 book ai didi

sql - 将 NULL 值传递给存储过程时保留数据库中的原始值

转载 作者:行者123 更新时间:2023-12-01 01:22:55 25 4
gpt4 key购买 nike

您好,我是 SQL 新手,需要帮助我有一个参数化的存储过程,其中包含一个更新查询,例如...

UPDATE sometable 
SET
price1 = @param1,
price2 = @param2,
price3 = @param3,
price4 = @param4,
WHERE
ID = @param5

现在,当我通过将任何参数值设置为 NULL 来执行此 SP 时,它会在 DB 中更新,我想知道如果其中一个参数值为 NULL,那么我们可以在 DB 中保留该列的原始值而不是用 NULL 更新它。

最佳答案

在 SQLServer 中,整洁的方法是使用 ISNULL(@param1, price1) .

这需要@param1 并检查它是否为NULL。如果它为 NULL,则将其替换为 price1 中的值。我喜欢 ISNULL因为它非常易读,所以按照锡上所说的去做。

虽然它不是 ANSI SQL,但有一个更灵活的命令:COALESCE .就像 ISNULL , 但接受任意数量的参数。它搜索它们以查找第一个非 NULL 值。如果没有找到,则返回 NULL...


UPDATE sometable 
SET
price1 = ISNULL(@param1, price1),
price2 = ISNULL(@param2, price2),
price3 = ISNULL(@param3, price3),
price4 = ISNULL(@param4, price4)
WHERE
ID = @param5


UPDATE sometable 
SET
price1 = COALESCE(@param1, price1),
price2 = COALESCE(@param2, price2),
price3 = COALESCE(@param3, price3),
price4 = COALESCE(@param4, price4)
WHERE
ID = @param5


另见:“COALESCE vs ISNULL

关于sql - 将 NULL 值传递给存储过程时保留数据库中的原始值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1211286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com