如何解决数据库中,数字+null=null

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决数据库中,数字+null=null相关的知识,希望对你有一定的参考价值。

我使用SQLServer,做一个 update 操作,累计一个数。在数据库中,为了方便,数据库中这个字段我设为允许为空,并且设置了默认值为 0 。但是在新增的数据中心,那个字段还是为 null,做 update操作时的SQL为:update tableName set num=num + 接收到的数 where id=XXX ; 犹豫刚开始 num 为null ,所以 update后依然为空?要怎么解决这个问题?

ps:我的解决办法是在update前先查一次这个num,如果num为空,就直接update num=接收到的数,如果num > 0,再update num=num + 接收到的数。请问有没有更好的办法?

谢谢大神了!

数据字段被设置为允许为空, 那么默认值是不起作用的. 所以, 在插入数据时如果不指定那个字段的值, 那么其值肯定为null. 还有, 数据库字段的运算中, null与任何值运算的结果都是null, 这点要切记.
可以使用isnull函数指定在其值为null情况下的取值:
update tableName set num = isnull(num, 0) + 接收到的数 where id=XXX
也可以使用case when来进行条件判断取值:
update tableName set num = ( case when num is null then 0 when num > 0 then num else 小于等于0情况下的值 end ) + 接收到的数 where id=XXX
参考技术A 改成这样就好了
update tableName set num=isnull(num,0) + isnull(接收到的数,0) where id=XXX
参考技术B update tableName set num=isnull(num,0) + 接收到的数

要这样?
参考技术C 设置了默认值,设为允许为空?????
这不是给自己找麻烦吗.
不允许空
参考技术D 不允许空不行吗?

如何解决在 null 上调用了方法“[]”。在颤动中[重复]

【中文标题】如何解决在 null 上调用了方法“[]”。在颤动中[重复]【英文标题】:How can I solve The method '[]' was called on null. in flutter [duplicate] 【发布时间】:2021-01-30 23:03:59 【问题描述】:

在将 JSON 数据用于文本 wigdet 后,我​​收到此错误。 我的json本地存储在

assets/json/data.json

我正在使用 ListView.builder 构建一个 Listview

我的代码

 Widget build(BuildContext context) 
  return Scaffold(
    backgroundColor: Color(0xff655ee6),
    appBar: AppBar(
      backgroundColor: Color(0xff655ee6),
      title: Text("Apply Online"),
    ),
    body: SingleChildScrollView(
      child: SizedBox(
        height: MediaQuery.of(context).size.height,
        child: FutureBuilder(
          future: DefaultAssetBundle.of(context).loadString("assets/json/example.json"),
          builder: (context,snapshot)
            var mydata = json.decode(snapshot.data.toString());
            if(mydata == null)
              return Center(
                child: CircularProgressIndicator(
                ),
              );
            
            else return ListView.builder(
              itemCount: 30,
              itemBuilder: (context, index)
                return Card(
                  child: ListTile(
                    title: Text(mydata["saarthiService"]['applyOnline']["0"]),
                    leading: Icon(Icons.import_contacts),

                  ),
                );
              ,
            );
          ,
        ),
      ),
    ),
    );
 
 

请帮助我,我是 Flutter 的新手 谢谢

【问题讨论】:

请提供更多信息、完整错误、json文件等... 好的,我会尽快编辑问题 【参考方案1】:

当您尝试使用键从映射或使用索引从列表访问任何值但您的映射/列表为 null 时,会发生此错误。 在你的情况下这一行:

mydata["saarthiService"]['applyOnline']["0"]

很可能是导致错误的原因。确保:

mydata 不为空 mydata["saarthiService"] 不为空 mydata["saarthiService"]['applyOnline'] 不为空

我会建议您通过打印到控制台来检查您的数据并验证它不为空。

【讨论】:

【参考方案2】:

错误来自这一行

mydata["saarthiService"]['applyOnline']["0"]

嵌套地图中的一些地图为空

要消除错误,只需使用 null 运算符并为其提供一个空映射。

 ((mydata["saarthiService"]?? )['applyOnline'] ?? )["0"] ?? " 

?? operator 检查 map 是否为 null 如果 map 为 null 然后我们创建一个空 map 并且将从这里访问下一个键

只要使用它,你的错误就会得到解决

【讨论】:

这完全不正确。这仍然会导致错误。 你检查了吗。它对我有用 你不知道 OP 的数据。这是不可能测试的,所以我非常怀疑你是否知道它确实有效。根据我对错误的了解,这不会解决它。请查看链接的副本。 根据我的经验,它一直对我有用。只需检查并告诉我 为什么会这样?错误是这一行mydata["saarthiService"]['applyOnline']["0"] 的结果。简单地运行这行代码将导致错误。您的代码在运行这行代码之后添加了一个空检查。因此,错误仍然会发生,并且会在它到达您添加的代码之前发生。

以上是关于如何解决数据库中,数字+null=null的主要内容,如果未能解决你的问题,请参考以下文章

使用 zoho 图像获取 api 时,如何在 react native 中解决图像数据响应为 null 的问题?

当虚拟数据存储在 Django 数据库中且其 id 为 none 且所有值为 null 时如何解决错误

如何解决 Singelton 为 NULL 问题[重复]

值不能为null.参数名: viewInfo,如何解决

值不能为null.参数名: viewInfo,如何解决

CopyToDataTable:如果一个字段为NULL,为什么会抛出错误,以及如何解决它?