如何解决数据库中,数字+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 + 接收到的数。请问有没有更好的办法?
谢谢大神了!
可以使用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 的问题?