# 起因
今天下午 2 点多去加班写 Bug,用 SqlParameter 的方法查询 Oracle 数据库,条件中需要用到 IN 操作符,没有仔细考虑就按照正常方法写了上去,结果可想而知是不行的。去网上查询也没找到好办法。
就和同事吐槽了句:SqlParameter 不支持 IN 啊,要硬拼接了啊。同事来了句:这简单,用 INSTR () 函数就好了。
啊这,还是太菜了。
# 代码记录
用 INSTR () 函数代替 IN 操作符就好了,ORACLE 的 INSTR () 函数用法
代码1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| StringBuilder sb = new StringBuilder(); foreach (var list in List) { sb.Append(list.Id + ","); } string Ids = sb.ToString().TrimEnd(new char[] { ',' }); try { SqlItem sqlItem = new SqlItem(); sqlItem.StrSql = @"SELECT * FROM TABLE T WHERE INSTR(:IDS, T.ID) > 0" sqlItem.AppendParameter("IDS", Ids, typeof(string)); DataSet data = DataSetProvider.ExecuteSqlItem(sqlItem); return data; } catch (Exception ex) { return null; }
|
# 吐槽
被借调过来出差好烦啊,是个老古董项目,用的还是 VS2008 开发。2008 年啊,2008 年我还在上小学