/// <summary>
        /// 查询数据报表
        /// </summary>
        /// <param name="TrueOutTimeTo">日期范围尾</param>
        /// <param name="anslyse">分析角度</param>
        /// <param name="model">派车任务模型</param>
        /// <returns></returns>
        public DataTable GetVehDisReport(string TrueOutTimeTo, string anslyse, VehDispTaskModel model)
        {
            string sql = string.Empty;//存储sql语句头
            StringBuilder sqlWhere = new StringBuilder();//存储查询条件的sql

List<SqlParameter> listStr = new List<SqlParameter>();//用于动态存储参数最后转成sqlparameter[]即可

string[] arrLicensePlate = model.LicencePlate.Split(',');//存储勾选的所有车牌
            if (!string.IsNullOrEmpty(model.LicencePlate.Trim()))
            {
                //参数化拼接in('','','')查询语句
                string sLicensePlateCondition = " AND LicencePlate in (";
                for (int i = 0; i < arrLicensePlate.Length; i++)
                {
                    if (!string.IsNullOrEmpty(arrLicensePlate[i]))
                    {
                        sLicensePlateCondition += "@Plate" + i+",";
                         listStr.Add( new SqlParameter("@Plate" + i, arrLicensePlate[i]));
                    }
                }
                sLicensePlateCondition = sLicensePlateCondition.TrimEnd(',');
                sLicensePlateCondition += ")";
                //加入查询条件
                sqlWhere.Append(sLicensePlateCondition);
            }

string[] arrDriverId = model.DriverId.Split(',');//存储所有勾选的司机工号
            if (!string.IsNullOrEmpty(model.DriverId))
            {
                //参数化拼接in('','','')查询语句
                string sDriverIdCondition = "AND DriverId in (";
                for (int i = 0; i < arrDriverId.Length; i++)
                {
                    if (!string.IsNullOrEmpty(arrDriverId[i]))
                    {
                        sDriverIdCondition += "@DriverId" + i + ",";
                        listStr.Add(new SqlParameter("@DriverId" + i, arrDriverId[i]));
                    }
                }
                sDriverIdCondition = sDriverIdCondition.TrimEnd(',');
                sDriverIdCondition += ")";
                //加入查询条件
                sqlWhere.Append(sDriverIdCondition);

}
            if (!string.IsNullOrEmpty(model.VehDispTime.ToString()) && !string.IsNullOrEmpty(TrueOutTimeTo))
            {
                listStr.Add(new SqlParameter("@OutTimeFrom", model.VehDispTime));
                listStr.Add(new SqlParameter("@OutTimeTo",Convert.ToDateTime(TrueOutTimeTo)));
                sqlWhere.Append(" AND VehDispTime between cast(@OutTimeFrom as datetime) and cast(@OutTimeTo as datetime)");
            }
            if (anslyse == "1")//如果分析角度为1说明是司机,否则为公务车
            {
                sql = string.Format(@"select DriverId as '司机工号DriverId',DriverName as '司机姓名DriverName',Convert(varchar(10),VehDispTime,120)as '实际派车日期VehDispTime',
                                  round(sum(Datediff(hour,TrueoutTime,TrueBackTime)),0) as '派车时数Hours' from [dbo].[vwVehDispTask]
               where Status = 'Finished'" + "{0}" + "group by DriverId,DriverName,Convert(varchar(10),VehDispTime,120)", sqlWhere);
            }
            else
            {
                sql = string.Format(@"select  LicencePlate as '车牌LicencePlate',VehModel as '车型VehModel',Convert(varchar(10),VehDispTime,120)as '实际派车日期VehDispTime',
                                  round(sum(Datediff(hour,TrueoutTime,TrueBackTime)),0) as '派车时数Hours' from [dbo].[vwVehDispTask]
               where Status = 'Finished'" + "{0}" + "group by Convert(varchar(10),VehDispTime,120), LicencePlate,VehModel", sqlWhere);
            }
            SqlParameter[] param = listStr.ToArray();
            return DBHelper.GetDataSet(sql, param);
        }

参数化拼接in查询条件,个人备份的更多相关文章

  1. 论Top与ROW_NUMBER读取第一页的效率问题及拼接sql查询条件

    http://www.cnblogs.com/Leo_wl/p/4921799.html SELECT TOP * FROM users WHERE nID> And nID< ORDER ...

  2. mybatis 使用记录(二) 动态拼接查询条件

    2016-12-16 阅读项目代码时,在项目的xml文件中发现如下写法: SELECT student_user_id FROM tbr_student_class WHERE 1=1 <if ...

  3. Oracle,Mysql ,SQL Server 三大数据库带参数的模糊查询, 拼接查询条件问题

    最近项目开发一直在不断切换数据库,有时候一条sql 要同时考虑多种数据库中的兼容问题 , 先总结一条模糊查询拼接查询条件的问题,后续追加总结. 目前使用   mybatis: 1. Oracle 中使 ...

  4. .NetCore 使用 Linq 动态拼接Expression表达式条件来实现 对EF、EF Core 扩展查询排序操作

    相信在使用EF的时候对查询条件或者排序上的处理令人心烦,下面我们就来动态拼接表达式解决这一问题 当我们在查询中使用Where的时候可以看到如下参数 下面我们就来扩展 Expression<Fun ...

  5. 我的一个PLSQL函数 先查询再插入数据库的函数 动态SQL拼接查询条件、通用游标、记录定义(封装部分查询字段并赋值给游标)、insert select 序列、常量【我】

    先查询再插入数据库的函数 CREATE OR REPLACE FUNCTION F_REVENUE_SI(l_p_cd in Varchar2, l_c_cd in Varchar2, l_prod_ ...

  6. SQL Server 存储过程中处理多个查询条件的几种常见写法分析,我们该用那种写法

    本文出处: http://www.cnblogs.com/wy123/p/5958047.html 最近发现还有不少做开发的小伙伴,在写存储过程的时候,在参考已有的不同的写法时,往往很迷茫,不知道各种 ...

  7. LINQ to SQL 运行时动态构建查询条件

    在进行数据查询时,经常碰到需要动态构建查询条件.使用LINQ实现这个需求可能会比以前拼接SQL语句更麻烦一些.本文介绍了3种运行时动态构建查询条件的方法.本文中的例子最终实现的都是同一个功能,从Nor ...

  8. Spring NamedParameterJdbcTemplate命名参数查询条件封装, NamedParameterJdbcTemplate查询封装

    Spring NamedParameterJdbcTemplate命名参数查询条件封装, NamedParameterJdbcTemplate查询封装 >>>>>> ...

  9. MyDAL - .Where() 之 .WhereSegment 根据条件 动态设置 Select查询条件 使用

    索引: 目录索引 一.API 列表 1.WhereSegment 属性,指示 根据条件 动态拼接 where 查询过滤条件 见如下示例. 二.API 单表-完整 方法 举例 // 上下文条件 变量 v ...

随机推荐

  1. group by 两个或以上条件的分析

    首先group by 的简单说明: group by 一般和聚合函数一起使用才有意义,比如 count sum avg等,使用group by的两个要素:   (1) 出现在select后面的字段 要 ...

  2. 新姿势!Redis中调用Lua脚本以实现原子性操作

    背景:有一服务提供者Leader,有多个消息订阅者Workers.Leader是一个排队程序,维护了一个用户队列,当某个资源空闲下来并被分配至队列中的用户时,Leader会向订阅者推送消息(消息带有唯 ...

  3. 前端开发快速定位bug的一些小技巧

    1,根据报错信息定位: (1) Uncaught TypeError: Cannot read property 'attr' of undefined; 此类型为变量或者对象属性未定义类型. (2) ...

  4. Common operators to overload-c++运算符重载的标准语法(全)

    Common operators to overload Most of the work in overloading operators is boiler-plate code. That is ...

  5. luogu1556 幸福的路

    注意到\(n\le10\),所以枚举经过的拐弯牛的所有排列. 注意到STL是一个好东西,所以我这里偷懒直接使用了next_permutation 枚举所有n的排列,对于每一个排列也就是经过拐弯牛的顺序 ...

  6. list与str互转

    import stringstr = 'abcde' list = list(str)list['a', 'b', 'c', 'd', 'e']str'abcde'str_convert = ''.j ...

  7. 在本地开发环境没问题,但是发布到服务器出现:未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\106f9ae8\cc0e1169\App_global.asax.haz99mum.dll”--“拒绝访问。 ”错误

    解决方法: 1,通常的解决方法:原因是由于系统目录下的Temp目录无相应的权限所致,具体操作如下:C:\Windows\temp-->属性-->安全-->编辑-->添加NETW ...

  8. JAVA第二个程序

    关于计算基础问题华氏度与摄氏度互相转化问题 题目内容: 写一个将华氏温度转换成摄氏温度的程序,转换的公式是: °F = (9/5)*°C + 32 其中C表示摄氏温度,F表示华氏温度. 程序的输入是一 ...

  9. django文件配置

    先是 staticfile 文件配制 STATTCFILE=(os.path.join(BASE_DIR,'static'),) 然后是数据库配置  : DATABASES = { 'default' ...

  10. 搭建 Django 平台

    1.使用Pycharm.创建一个Django项目 2.图示 3.在终端输入: 4.结果