永发信息网

怎么让update不更新值为null的字段

答案:2  悬赏:30  手机版
解决时间 2021-01-26 19:00
  • 提问者网友:不要迷恋哥
  • 2021-01-26 01:06
怎么让update不更新值为null的字段
最佳答案
  • 五星知识达人网友:一把行者刀
  • 2021-01-26 01:29
参照下
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就用自己原来自己的值更新,实际上是保留原值
全部回答
  • 1楼网友:十年萤火照君眠
  • 2021-01-26 02:56
都是null 没什么区别,不过你要注意 null(相当于nullptr)和空字符穿(相当于c++ 中的 ""空字符串)串不是一个意思。如果是空白字符在你这里是看不到 null的,你看到就是个白的。并且在sql 中 ;举个例子" select * from xxx where name = '' " 和 “select * from xxx where name = null ”是两个意思,你查询你就知道了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯