我现在想查询字段值是条件的一部分,比如我的条件集合是 ('12','34','56','78','90') 而我的字段可能是12,可能是34 也可能是 12,34
我原来的SQL写的是 where 字段 in result 其中result 就是我得到的条件集合,但是这样只能查询含有集合中的一个值的,有多个值的字段就不行了。于是想到了模糊查询,但好像又不太对。求赐教啊。。。
13 个解决方案
#1
SQL拼接呀 小喷油
参考..
不知道发了多少次了拉- -
这是一个参考代码 可以选一个条件查询 可以选择多个。
参考..
不知道发了多少次了拉- -
/// <summary>
/// 根据日期,资源名称,资源描述查询资源信息
/// </summary>
/// <returns></returns>
public DataSet FN_SerchByDateAndType(Guid FolderId, NRModel.File model, string createdate, string endate)
{
string strSql = "select * from t_File where 1 =1 and FolderId=@FolderId";
string strWhere = "";
if (!string.IsNullOrEmpty(model.FileNam))
{
strWhere += " and FileNam like @FileNam";
}
//if (!string.IsNullOrEmpty(model.Decription)k)
//{
// strWhere += " and Decription like @Decription";
//}
if (!string.IsNullOrEmpty(createdate) || !string.IsNullOrEmpty(endate))
{
strWhere += " and CreateOn between @createdate and @endate order by ModefyOn desc";
}
strSql += strWhere;
SqlParameter[] parameters = {
new SqlParameter("@FolderId", SqlDbType.UniqueIdentifier),
new SqlParameter("@FileNam", SqlDbType.NVarChar, 256),
new SqlParameter("@createdate", SqlDbType.NVarChar),
new SqlParameter("@endate", SqlDbType.NVarChar)
};
parameters[0].Value = FolderId;
parameters[1].Value = "%" + model.FileNam + "%";
//parameters[1].Value = "%" + model.Decription + "%";
parameters[2].Value = createdate;
parameters[3].Value = endate;
return DbHelperSQL.Query(strSql, parameters);
//SqlParameter[] parameters = new SqlParameter[4];
//parameters[0] = new SqlParameter("@FileNam", model.FileNam);
//parameters[1] = new SqlParameter("@stardate", createdate);
//parameters[2] = new SqlParameter("@enddate", endate);
////执行存储过程
//return DbHelperSQL.RunProcedure("P_UserSerch", parameters, "t_File");
}
这是一个参考代码 可以选一个条件查询 可以选择多个。
#2
select * from Table where name like '%张%' ||name like '%12%' || name like '%34%'
#3
还是得用where in(select ziduan from table)
#4
讲result分成单个的,然后
where 字段=result1 or 字段=result2 or 字段=result3
where部分用for语句来循环得到
where 字段=result1 or 字段=result2 or 字段=result3
where部分用for语句来循环得到
#5
难道我误解了- -`
#6
linq用多了把 sql可以用||?
#7
where in 语句执行太慢,可以考虑使用StringBuffer、拼接sql语句,增加判断:
if(参数 !=null){
sql。append(“and 字段 like ‘参数’”);
}
if(参数 !=null){
sql。append(“and 字段 like ‘参数’”);
}
#8
你的字段的值可能同时出现12,34?用where In 试试
#9
楼主人呢?
#10
首先我不知道我理解对没有
动态设置sql语句,如
DECLARE @sqlvar varchar(8000)
SET @sqlvar='12,34,56,78,90'--你的条件集合
SELECT * FROM Table WHERE CHARINDEX('12,34',@sqlvar)>0--"12,34"就是你的字段值
#11
or拼接都不肯的人哪~~~~
不过如果多个这样的。。。效率可想
不过如果多个这样的。。。效率可想
#12
sql拼接
#13
好吧。。刚刚接触.net 用了linq 忘了 ADO的人伤不起啊。。。刚刚楼主解决问题去了 现在OK了 等我再整理下马上结贴 感谢大家的帮助 好人一生平安。。
#1
SQL拼接呀 小喷油
参考..
不知道发了多少次了拉- -
这是一个参考代码 可以选一个条件查询 可以选择多个。
参考..
不知道发了多少次了拉- -
/// <summary>
/// 根据日期,资源名称,资源描述查询资源信息
/// </summary>
/// <returns></returns>
public DataSet FN_SerchByDateAndType(Guid FolderId, NRModel.File model, string createdate, string endate)
{
string strSql = "select * from t_File where 1 =1 and FolderId=@FolderId";
string strWhere = "";
if (!string.IsNullOrEmpty(model.FileNam))
{
strWhere += " and FileNam like @FileNam";
}
//if (!string.IsNullOrEmpty(model.Decription)k)
//{
// strWhere += " and Decription like @Decription";
//}
if (!string.IsNullOrEmpty(createdate) || !string.IsNullOrEmpty(endate))
{
strWhere += " and CreateOn between @createdate and @endate order by ModefyOn desc";
}
strSql += strWhere;
SqlParameter[] parameters = {
new SqlParameter("@FolderId", SqlDbType.UniqueIdentifier),
new SqlParameter("@FileNam", SqlDbType.NVarChar, 256),
new SqlParameter("@createdate", SqlDbType.NVarChar),
new SqlParameter("@endate", SqlDbType.NVarChar)
};
parameters[0].Value = FolderId;
parameters[1].Value = "%" + model.FileNam + "%";
//parameters[1].Value = "%" + model.Decription + "%";
parameters[2].Value = createdate;
parameters[3].Value = endate;
return DbHelperSQL.Query(strSql, parameters);
//SqlParameter[] parameters = new SqlParameter[4];
//parameters[0] = new SqlParameter("@FileNam", model.FileNam);
//parameters[1] = new SqlParameter("@stardate", createdate);
//parameters[2] = new SqlParameter("@enddate", endate);
////执行存储过程
//return DbHelperSQL.RunProcedure("P_UserSerch", parameters, "t_File");
}
这是一个参考代码 可以选一个条件查询 可以选择多个。
#2
select * from Table where name like '%张%' ||name like '%12%' || name like '%34%'
#3
还是得用where in(select ziduan from table)
#4
讲result分成单个的,然后
where 字段=result1 or 字段=result2 or 字段=result3
where部分用for语句来循环得到
where 字段=result1 or 字段=result2 or 字段=result3
where部分用for语句来循环得到
#5
难道我误解了- -`
#6
linq用多了把 sql可以用||?
#7
where in 语句执行太慢,可以考虑使用StringBuffer、拼接sql语句,增加判断:
if(参数 !=null){
sql。append(“and 字段 like ‘参数’”);
}
if(参数 !=null){
sql。append(“and 字段 like ‘参数’”);
}
#8
你的字段的值可能同时出现12,34?用where In 试试
#9
楼主人呢?
#10
首先我不知道我理解对没有
动态设置sql语句,如
DECLARE @sqlvar varchar(8000)
SET @sqlvar='12,34,56,78,90'--你的条件集合
SELECT * FROM Table WHERE CHARINDEX('12,34',@sqlvar)>0--"12,34"就是你的字段值
#11
or拼接都不肯的人哪~~~~
不过如果多个这样的。。。效率可想
不过如果多个这样的。。。效率可想
#12
sql拼接
#13
好吧。。刚刚接触.net 用了linq 忘了 ADO的人伤不起啊。。。刚刚楼主解决问题去了 现在OK了 等我再整理下马上结贴 感谢大家的帮助 好人一生平安。。