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

使用EF Core和Npgsql过滤PostgreSQL jsonb整数数组报错求助

问题分析与解决

异常原因

  • 错误地对jsonb类型的TypeJson字段使用string.IsNullOrEmpty()方法。EF Core会将这个逻辑转换为PostgreSQL的btrim()函数调用,但PostgreSQL没有接受jsonb类型参数的btrim()函数,直接触发了42883错误。
  • JsonExistAny传入的"2"是字符串类型,而JSON数组里的元素是整数,类型不匹配会导致过滤结果不符合预期。

正确查询写法

修复核心问题

去掉对jsonb字段的字符串空值判断(直接检查字段是否为null即可),同时将查询值改为整数类型,确保与数组内元素类型一致:

await _dbContext.Table
    .Where(x => x.TypeJson != null && EF.Functions.JsonExistAny(x.TypeJson, 2))
    .ToListAsync();

简化版本(若TypeJson不会为null)

如果确定TypeJson字段不会存储null值,可进一步简化:

await _dbContext.Table
    .Where(x => EF.Functions.JsonExistAny(x.TypeJson, 2))
    .ToListAsync();

这样就能正确筛选出Id为1和2的行,同时解决了数据库函数调用的错误问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 03:20:31