@sql =select * from Table1 where 1=1 if(@column1 is not null) @sql = @sql+ @colum1value if(@colum2 is not null) @sql = @sql +@colum2value...如此..
select * from order where buyer=? and re=? 我知道不多 我觉得 你查询 多个条件 直接用模糊查询 就OK了啊 如果 为空 就全部查询 和你不限制条件是一样的效果 一般都这样 select * from order where buyer like '%+表达市+%' and re like '%+表达式+%' 这样 就可以把你想要的结果查询出来啊
目前用到的最好方法String sql = new String("select * from order where (:useBuyer=1 or buyer=:buyer) and (:useRe=1 or re=:re"); Query query = em.createQuery(sql) .setParameter("useBuyer",1) .setParameter("buyer","") .setParameter("useRe",0) .setParameter("re","a");
select * from order where buyer=? and re=? 中加一个1=1的条件就可以了吧。不知道你说的是不是这个意思 select * from order where buyer=? and re=? and 1=1; 无论什么情况下都会从在条件。 select * from order where 1=1;
如果在存储地过程里面写可以这样 sql server: select * from order where buyer=isnull(@buyer, buyer) and re=isnull(@re, re);oracle: select * from order where buyer=nvl(p_buyer, buyer) and re=nvl(p_re, re);
nvl不能用在查询条件中,你这样的情况可以求助于框架,iBatis就不错,我工作一般都是用这个了.
推荐使用ibatis, 多几个包和配置文件, 得到很好的灵活性。good luck
对于这个问题,你可做这样一种操作 select * from 表 where 1=1 之后,对于条件 String wherevalue=""; if(变量1!=null) wherevalue=" and 字段1=?" if(变量2!=null) wherevalue=" and 字段2=?" ……之后,赋值也有同样的操作方法,即可搞定啦!就这么简单啦!
不懂~~数据库没学好~~
if(@column1 is not null)
@sql = @sql+ @colum1value
if(@colum2 is not null)
@sql = @sql +@colum2value...如此..
我知道不多 我觉得 你查询 多个条件 直接用模糊查询 就OK了啊
如果 为空 就全部查询 和你不限制条件是一样的效果 一般都这样
select * from order where buyer like '%+表达市+%' and re like '%+表达式+%'
这样 就可以把你想要的结果查询出来啊
if(xxx)
{
sql=sql+"and a=1"}
if(xxx)
{
sql=sql+ and b=2
}
Query query = em.createQuery(sql)
.setParameter("useBuyer",1)
.setParameter("buyer","")
.setParameter("useRe",0)
.setParameter("re","a");
例如:if(userName==null){
userName = "like %";
}全部用like语句来查询啊最后把各个查询的字段给链接起来就可以哦
中加一个1=1的条件就可以了吧。不知道你说的是不是这个意思
select * from order where buyer=? and re=? and 1=1;
无论什么情况下都会从在条件。
select * from order where 1=1;
sql server:
select * from order where buyer=isnull(@buyer, buyer) and re=isnull(@re, re);oracle:
select * from order where buyer=nvl(p_buyer, buyer) and re=nvl(p_re, re);
多几个包和配置文件,
得到很好的灵活性。good luck
select * from 表 where 1=1
之后,对于条件
String wherevalue="";
if(变量1!=null)
wherevalue=" and 字段1=?"
if(变量2!=null)
wherevalue=" and 字段2=?"
……之后,赋值也有同样的操作方法,即可搞定啦!就这么简单啦!
用分支语句
if(a!=null)
sql=sql+"and a=??";
if(b!=null)
sql=sql+"and b=??";
有多少个条件就写多少个
StringBuffer sb = new StringBuffer();
sb.append("SELECT voucher_id, sequence, documention, to_char(voucher_date, 'yyyy-mm-dd')voucher_date, brief, borrow, lender FROM vouchers WHERE 1=1 ");
if (null != vv) {
if (null != vv.getVoucher_date()&& !"".equals(vv.getVoucher_date())) {
sb.append(" AND voucher_date=to_date('");
sb.append(vv.getVoucher_date());
sb.append("','yyyy-mm-dd HH24:MI:SS')");
}
if (null != vv.getDocumention() && !"".equals(vv.getDocumention())) {
sb.append(" AND documention='").append(vv.getDocumention()).append("'");
}
if (null != vv.getSequence() && !"".equals(vv.getSequence())) {
sb.append(" AND sequence=").append(vv.getSequence());
}
if (null != vv.getBrief() && !"".equals(vv.getBrief())) {
sb.append(" AND brief='").append(vv.getBrief()).append("'");
}
if (null != vv.getBorrow() && !"".equals(vv.getBorrow())) {
sb.append(" AND borrow='").append(vv.getBorrow()).append("'");
}
if (null != vv.getLender() && !"".equals(vv.getLender())) {
sb.append(" AND lender='").append(vv.getLender()).append("'");
}
}
sb.append(" ORDER BY voucher_id desc");