Oracle数据库,字段拼接+翻译成了+号,oracle下应该是|| 报错:ORA-01722: 无效数字 返回
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下支持连接符应该翻译成:||
热忱回答(2)
-
fate sta VIP0
2025/9/30只有string和string相加生成的才是||
所以你要用sqlfunc.mergestring
0 回复 -
CodingLife VIP0
2025/9/30测试改为。sqlfunc.mergestring可以解决问题,谢谢老师...
0 回复