为了账号安全,请及时绑定邮箱和手机立即绑定

如果给定的值不为空/空,SQL 如何更新数据

如果给定的值不为空/空,SQL 如何更新数据

C#
有只小跳蛙 2021-10-23 16:18:20
我有一个用户表,我希望用户更新他们的一些详细信息(数据),但是如果用户决定不插入值并将其发送为空,我希望数据保持相同的值。如果我插入,这对我根本不起作用 -exec UpdateAboutMe '','','',21  To this proc:我无法将代码复制到此处:“您的帖子似乎包含格式不正确的代码”我尝试了半个小时来更改它,但同样的消息不断出现 - 我上传了一个屏幕截图它删除了用户数据和它的空。我尝试了很多方法,更不用说一天一夜一百万了,但都没有成功。什么是正确的方法?说清楚这与我想要的相反 -    SET @AboutMe= IsNull(@AboutMe, [About_me])因此,如果@AboutMe 发送为空,[About_me] 将不会被清除/擦除。谢谢。
查看完整描述

3 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

如果值被传递为 as NULL,那么您可以简单地执行以下操作:

SET AboutMe = COALESCE(@AboutMe, About_me)

如果它们可以是NULL或空白,那么您可以使用显式CASE

SET AboutMe = (CASE WHEN @AboutMe IS NULL OR LTRIM(@AboutMe) = '' THEN Aboutme ELSE @AboutMe END)



查看完整回答
反对 回复 2021-10-23
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

CASE如果变量IS NULL或空字符串或只是空格,您可以使用自身替换值。否则使用变量的值。这是可能的例如通过使用的组合ltrim(),isnull()并为空字符串的比较。


UPDATE [Users_Table]

       SET [User_name] = CASE

                           WHEN ltrim(isnull(@User_name, '')) = '' THEN

                             [User_name]

                           ELSE

                             @User_name

                         END,

           [About_me] = CASE

                          WHEN ltrim(isnull(@AboutMe, '')) = '' THEN

                            [About_me]

                          ELSE

                            @AboutMe

                        END,

           [City] = CASE

                      WHEN ltrim(isnull(@City, '')) = '' THEN

                        [City]

                      ELSE

                        @City

                    END

       WHERE [UserID] = @ID;


查看完整回答
反对 回复 2021-10-23
?
慕斯王

TA贡献1864条经验 获得超2个赞

我认为您也想“忽略”,''但问题是这不是NULL.


尝试这个:


CREATE PROC UpdateMy

  @User_name nvarchar(15),

  @AboutMe nvarchar(150),

  @City nvarchar(21),

  @ID int

AS

BEGIN

  UPDATE Users_Table

  SET

    [User_name] = CASE WHEN ISNULL(@User_name, N'') = N'' THEN [User_name] ELSE @User_name END,

    [About_me] = CASE WHEN ISNULL(@AboutMe, N'') = N'' THEN [About_me] ELSE @AboutMe END,

    [City] = CASE WHEN ISNULL(@City, N'') = N'' THEN [City] ELSE @City END

  WHERE [UserID] = @ID;


  SELECT * FROM Users_Table WHERE [UserID] = @ID;

END

GO


查看完整回答
反对 回复 2021-10-23
  • 3 回答
  • 0 关注
  • 215 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信