sql 语句中where 1=1 1=2作用

写一个1=1是为了后面的条件。这个SQL应该是在程序中拼出来的,程序中首先不能肯定后面的条件是否肯定会有,为了程序简单先加上where 1=1,后面的就可以直接拼接。如果不这样处理就需要在拼接后面的每一个条件时都要判断是不是where子句的第一个件条,以决定是否要在前面加and

 public PageResults<OrderVo> find(Long oid, String name, String mobile, String ostatus,
   Date time1, Date time2) {
  this.userSessionFactoryCustomer();
  this.userSessionFactoryOrder();
  String queryString = "select o.id as id ,o.status as ostatus,o.createDate as createDate ,o.paidDate as paidDate ,o.collectionToolSendDate as collectionToolSendDate ,o.collectionToolSendLogisticId as collectionToolSendLogisticId,o.finishDate as finishDate ,o.remark as remark ,"
    + "o.amount as amount,o.thirdPartyPayment as paymode,ol.companyName as companyName, "
    + "c.name as name,c.mobile as mobile,ol.address as address "
    + "from orders.orders o, customer.customer c,orders.order_logistics ol "
    + "where o.customerId=c.id and ol.id=o.collectionToolSendLogisticId and o.valid=true ";
  String queryCountString = "select count(*) from orders.orders o, customer.customer c,orders.order_logistics ol where o.customerId=c.id and ol.id=o.collectionToolSendLogisticId and o.valid=true";
  
  if (oid!=null){
   queryString += " and o.id = :oid"; 
   queryCountString += " and o.id = :oid";
  }
  if(name != null && !"".equals(name)){
   queryString += " and c.name = :name";
   queryCountString += " and c.name = :name";
  }
  if(mobile != null && !"".equals(mobile)){
   queryString += " and c.mobile = :mobile";
   queryCountString += " and c.mobile = :mobile";
  }
  if( ostatus != null && !"".equals(ostatus)){
   queryString += " and o.status = :ostatus";
   queryCountString += " and o.status = :ostatus";
  }
  if(time1!=null){
   queryString +=" and o.createDate >= :time1 and o.createDate <= :time2";
   queryCountString += " and o.createDate >= :time1 and o.createDate <= :time2";
  }
  queryString += " order by o.createDate";
  
  Query query = this.getSession().createSQLQuery(queryString)
    .addScalar("id",StandardBasicTypes.LONG)
    .addScalar("ostatus")
    .addScalar("createDate")
    .addScalar("paidDate")
    .addScalar("collectionToolSendDate")
    .addScalar("collectionToolSendLogisticId",StandardBasicTypes.LONG)
    .addScalar("finishDate")
    .addScalar("remark")
    .addScalar("name")
    .addScalar("mobile",StandardBasicTypes.STRING)
    .addScalar("address")
    .addScalar("amount")
    .addScalar("companyName")
    .addScalar("paymode")
    .setResultTransformer(Transformers.aliasToBean(OrderVo.class));
  Query queryCount = this.getSession().createSQLQuery(queryCountString);
  
  if (oid!=null){
   query.setParameter("oid", oid);
   queryCount.setParameter("oid", oid);
  }
  if(name != null && !"".equals(name)){
   query.setParameter("name", name);
   queryCount.setParameter("name", name);
  }
  if(mobile != null && !"".equals(mobile)){
   query.setParameter("mobile", mobile);
   queryCount.setParameter("mobile", mobile);
  }
  if(ostatus != null && !"".equals(ostatus)){
   query.setParameter("ostatus", ostatus);
   queryCount.setParameter("ostatus", ostatus);
  }
  if(time1!=null){
   query.setParameter("time1",time1);
   query.setParameter("time2",time2);
   queryCount.setParameter("time1",time1);
   queryCount.setParameter("time2",time2);
  }
  
  int size = SystemContext.getSize();
  int offset = SystemContext.getOffset();
  
  query.setFirstResult(offset).setMaxResults(size);
  List<OrderVo> olist = query.list();
  PageResults<OrderVo> olistpage = new PageResults<OrderVo>();
  olistpage.setResults(olist);
  olistpage.setCurrentPage(offset);
  olistpage.setPageSize(size);
  BigInteger totalCount=(BigInteger)queryCount.uniqueResult();
  olistpage.setTotalCount(totalCount.intValue());
  return olistpage;
 }
}

where 1=2 是让记录集为空,因为只是用来插入一行,只需要得到表的各属性的数据类型即可。

速度较快 因为它不用和表内任何字段比对

时间: 2024-08-10 14:52:54

sql 语句中where 1=1 1=2作用的相关文章

SQL语句中like下划线不起作用

在用[select * from psx_element where ele_id like '%ref_%']查询是,表中出现了很多不包含[ref_]的结果. 经过一番度娘,终于了解. 因为下划线是通配符,需要用escape转义函数,写成下面的语句就可以了. select * from psx_element where ele_id like '%ref/_%' escape'/'

回顾sql语句中的各种连接

1. 内连接(Inner Join) 内连接是最常见的一种连接,它页被称为普通连接,而E.FCodd最早称之为自然连接. 下面是ANSI SQL-92标准 select * from    t_institution i inner join t_teller t on i.inst_no = t.inst_no where i.inst_no = "5801" 其中inner可以省略. 等价于早期的连接语法 select * from t_institution i, t_telle

oracle sql语句中使用if逻辑

l在 SQL 语句中使用IF-THEN-ELSE 逻辑 l l使用两种方法: •CASE 表达式:SQL99的语法,类似Basic,比较繁琐 •DECODE 函数:Oracle自己的语法,类似Java,比较简介 1 SQL> select ename,job, sal, case job when 'PRESIDENT' then 1.1*sal 2 2 when 'MANAGER' then 1.2*sal 3 3 when 'CLERK' then 1.3*sal 4 4 else 1.4*

SQL语句中DateAdd 函数说明

实践例子: 将借阅表中所有记录的归还日期加15天: 执行前情况: 执行后情况如下: update 借阅 set 归还日期=DateAdd ("D",15,归还日期) [详细讲解:] 返回 返回包含一个日期的 Variant (Date),这一日期还加上了一段时间间隔. 语法 DateAdd(interval, number, date) DateAdd 函数语法中有下列命名参数: interval 必要.字符串表达式,是所要加上去的时间间隔. number 必要.数值表达式,是要加上的

select 1 from ... sql语句中的1解读

摘自:http://blog.csdn.net/zengcong2013/article/details/48224509 select  1 from ..., sql语句中的1代表什么意思?查出来是个什么结果?         select 1 from table;与select anycol(目的表集合中的任意一行) from table;与select * from table 从作用上来说是没有差别的,都是查看是否有记录,一般是作条件查询用的.select 1 from 中的1是一常

关于SQL语句中SUM函数返回NULL的解决办法

SUM 是SQL语句中的标准求和函数,如果没有符合条件的记录,那么SUM函数会返回NULL. 但多数情况下,我们希望如果没有符合条件记录的情况下,我们希望它返回0,而不是NULL,那么我们可以使用例如下面的方法来处理: SELECT COALESCE(SUM(name),0) FROM person WHERE id > 0   行了,这下就不用费事去处理返回结果是否为NULL的情况了. COALESCE 函数的意思是返回参数列表中第一个为空的值,该方法允许传入多个参数,该函数也是SQL中的标准

关于在java中向带有IN的SQL语句中传参数的问题

今天遇到俩个问题: 1.在使用表格模型的时候,从数据库查询出来的数据赋值到Jtable的时候永远只显示最后一天记录,前面的都被覆盖了.一直在究其原因,未果,遂择其道而行之(第二个问题). 2.为了解决上面的问题,我将SQL语句的条件换成IN,目的想把所有参数一并传过去,查询所有记录后在一并显示到Jtable上,实验证明我的做法是对的.但是,一直没有搞懂IN(?)这个问号应该如何传值. SQL : String sql = " select sxh,grbm,xm,yybm,fyze,qzfbf,

SQL语句中常用关键词及其解释如下.pdf

SQL语句中常用关键词及其解释如下.pdf 路径 C:\Users\Administrator\Desktop\ 大小 1.18 MB 类型 PDF 文件 修改日期 2016年12月1日 16:50:15 文件被导入 2016年12月1日 17:02:34 附件列表

SQL语句中SUM与COUNT的区别

SUM是对符合条件的记录的数值列求和 COUNT 是对查询中符合条件的结果(或记录)的个数 例如: 表fruit id     name    price 1     apple     3.00 2     pear       4.00 select count(price) from fruit; ----执行之后结果为:2  (表示有2条记录) select  sum(price) from fruit;---执行之后结果为:7:00(表示各记录price字段之和为7.00) SQL语句