You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Prisma中查询非空列的正确方式?两种写法是否有差异?

Prisma中查询列值非空(IS NOT NULL)的正确方式

两种写法的差异

你给出的这两段代码功能完全一致,最终都会生成相同的SQL语句:WHERE myColumn IS NOT NULL,没有执行效果上的差异,仅语法结构不同:

  • 第一种是借助顶层NOT逻辑操作符,对myColumn: null这个条件取反;
  • 第二种是直接针对myColumn字段使用not过滤器,更聚焦单个字段的约束逻辑。

更标准的实现方式

Prisma官方推荐的、语义更清晰的写法是使用字段级的isNot过滤器,直接对应SQL的IS NOT NULL逻辑:

this._client.myTable.findMany({
  where: {
    myColumn: {
      isNot: null
    }
  }
})

你给出的第二种写法(myColumn: { not: null })也是完全合规的,和isNot: null效果等价。相比之下,isNot的语义更贴合"非空查询"的需求,可读性更强。

另外补充:如果你的字段在数据库中已经设置了NOT NULL约束,这类非空查询其实是冗余的,但Prisma依然会正常执行;只有当字段允许为NULL时,这类查询才有实际筛选意义。

内容的提问来源于stack exchange,提问作者justindao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 20:10:27