如何让update不更新值为null的字段。

jiaoke 2007-10-09 11:03:55
我想用一个update语句把所有的字段都列出来
比如:update set A,B,C,D 四个字段
当我想更新A字段时,就传入A参数,B,C,D的值都为null
想要的效果是 A新、B,C,D
而不是 A新、null,null,null
...全文
1842 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuu27 2007-10-09
  • 打赏
  • 举报
回复
参照下
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go


------------------------------------------------------
-- 生成日期: 2007-8-23 14:10:51
-- 创 建 者: Xuu27
-- 修 改 者:
-- 作 用:更改Basket中的一条记录(根据列的Null值)
-- 业务说明:
------------------------------------------------------
UPDATE PROCEDURE [dbo].[up_Basket_UPDATE_One_NullCheck]
(
@BasketID INT =NULL,--购物车ID
@MemberID INT =NULL,--会员ID
@DcSendGoodsTypeID INT =NULL,--送货方式
@PayOrderType INT =NULL,--支付订单方式
@Description VARCHAR(200) =NULL,--描述
@ReceiverName VARCHAR(50) =NULL,--收件人
@Telephone VARCHAR(50) =NULL,--电话
@Mobile VARCHAR(50) =NULL,--手机
@RegionID VARCHAR(50) =NULL,--地区ID
@RegionName VARCHAR(50) =NULL,--地区
@PostCode VARCHAR(50) =NULL,--邮编
@Address VARCHAR(200) =NULL,--地址
@UsedDcCashCardID INT =NULL--使用的现金劵
)
AS

UPDATE [dbo].[Basket]
SET
--[BasketID] = ISNULL(@BasketID,[BasketID]),
[MemberID] = ISNULL(@MemberID,[MemberID]),
[DcSendGoodsTypeID] = ISNULL(@DcSendGoodsTypeID,[DcSendGoodsTypeID]),
[PayOrderType] = ISNULL(@PayOrderType,[PayOrderType]),
[Description] = ISNULL(@Description,[Description]),
[ReceiverName] = ISNULL(@ReceiverName,[ReceiverName]),
[Telephone] = ISNULL(@Telephone,[Telephone]),
[Mobile] = ISNULL(@Mobile,[Mobile]),
[RegionID] = ISNULL(@RegionID,[RegionID]),
[RegionName] = ISNULL(@RegionName,[RegionName]),
[PostCode] = ISNULL(@PostCode,[PostCode]),
[Address] = ISNULL(@Address,[Address]),
[UsedDcCashCardID] = ISNULL(@UsedDcCashCardID,[UsedDcCashCardID])
WHERE
[BasketID] = @BasketID


用了ISNULL,意思是,如果传入是null就用自己原来自己的值更新,实际上是保留原值

ojekleen 2007-10-09
  • 打赏
  • 举报
回复 1
可以动态生成update语句,先判断值是否为null,不为null则加入更新字段,为null则不加入更新字段
常用是orm式
判断实体属性值是否为null;
glboy12 2007-10-09
  • 打赏
  • 举报
回复 1
如果我没记错,update的语法应该是update table set A='A' where id='条件'这样吧?
copico 2007-10-09
  • 打赏
  • 举报
回复 1


update set A = 'A' ,B=null,c=null,D=null from dt

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧