# 起因

今天下午 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 年我还在上小学

更新于 阅读次数