Oracle数据库,字段拼接+翻译成了+号,oracle下应该是|| 报错:ORA-01722: 无效数字 返回

SqlSugar 沟通中
2 754

Oracle数据版本:Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

1. C#代码:

var clinicId = "1111111";

var regList = db.Queryable<OutpInfusionRegEntity>()

              .Where(m => SqlFunc.Contains(',' + m.ClinicIds + ',', ',' + clinicId + ','))

              .Where(m => m.Status != 3)

              .Where(m => SqlFunc.Subqueryable<OutpInfusionApplyEntity>()

                          .Where(a => a.RegId == m.Id)

                          .NotAny())

              .ToList();

2. 生成的SQL:

SELECT "ID","CLINICIDS","PATIENTID","PATIENTNAME","ORGID","ORGNAME","SEAT","MEMO","REGDEPTID","REGDEPTNAME","REGEMPLOYEEID","REGEMPLYEENAME","REGTIME","STATUS","ENDDEPTID","ENDDEPTNAME","ENDEMPLOYEEID","ENDEMPLYEENAME","ENDTIME","CANCELDEPTID","CANCELDEPTNAME","CANCELEMPLOYEEID","CANCELEMPLYEENAME","CANCELTIME","PUNCTURESTATUS","ISAUTOGENERATE","ISSKINTEST" FROM "CT_OUTPINFUSIONREG" "M"  WHERE  ((( ',' + "CLINICIDS" ) +  ',' ) like '%'||(( ',' + N'1111111' ) +  ',' )||'%')   AND ( "STATUS" <> 3 )  AND (NOT EXISTS ( SELECT * FROM "CT_OUTPINFUSIONAPPLY" "A"  WHERE ( "REGID" = "M"."ID" ) ))

3. 报错提示:ORA-01722: 无效数字

这个位置存在问题: ((( ',' + "CLINICIDS" ) +  ',' ) like '%'||(( ',' + N'1111111' ) +  ',' )  在oracle下支持连接符应该翻译成:|| 

ConsoleApp14.zip


热忱回答2

  • fate sta fate sta VIP0
    2025/9/30

    只有string和string相加生成的才是||

    所以你要用sqlfunc.mergestring

    0 回复
  • 测试改为。sqlfunc.mergestring可以解决问题,谢谢老师...

    0 回复