在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
相关产品推荐
相关产品推荐

