关于sql语句,请特别关注
来源: 互联网 发布时间:2017-04-28
本文导语: 我有一个表的一项date单元,为String类型,2002-02-01 23:02:06的样式,在做组合查询时,只需要2002-02-01的部分就可以了,如何写这个SQL语句?? 另外,因为要做组合查询,有许多选项,当全部不选时,我就默认为查询整...
我有一个表的一项date单元,为String类型,2002-02-01 23:02:06的样式,在做组合查询时,只需要2002-02-01的部分就可以了,如何写这个SQL语句??
另外,因为要做组合查询,有许多选项,当全部不选时,我就默认为查询整个数据库,当有某个不选时,我就默认为该项条件是选择全部。请问如何写该SQL??
数据库是ACCESS的,用jsp语言。
另外,因为要做组合查询,有许多选项,当全部不选时,我就默认为查询整个数据库,当有某个不选时,我就默认为该项条件是选择全部。请问如何写该SQL??
数据库是ACCESS的,用jsp语言。
|
组和查询,以name和date为例,都不填就是查全部
String name = request.getParameter("name");
String datestr = request.getParameter("date");
String nameSQL="";
String dateSQL="";
if(name==null || name.equals("")) {
nameSQL = "";
} else {
nameSQL = " and name='" + name + "'";
}
if(datestr==null || datestr.equals("")) {
dateSQL = "";
} else {
dateSQL = " and substr(date,1,10)='" + datestr + "'";
}
sql = new StringBuffer();
sql.append("select * from table where 有效='1'");
sql.append(nameSQL);
sql.append(dateSQL);
ResultSet rs = database.executeQuery(new String(sql)) ;
String name = request.getParameter("name");
String datestr = request.getParameter("date");
String nameSQL="";
String dateSQL="";
if(name==null || name.equals("")) {
nameSQL = "";
} else {
nameSQL = " and name='" + name + "'";
}
if(datestr==null || datestr.equals("")) {
dateSQL = "";
} else {
dateSQL = " and substr(date,1,10)='" + datestr + "'";
}
sql = new StringBuffer();
sql.append("select * from table where 有效='1'");
sql.append(nameSQL);
sql.append(dateSQL);
ResultSet rs = database.executeQuery(new String(sql)) ;
|
组合查询
(1)动态拼sql 如:
String sql="select * from table ";
if(某个条件选种)
sql=sql+"where id='"+a+"'";
(2)模糊查询
if(查询条件==null)
查询条件="%";
else
查询条件="%"+查询条件+"%";
where=字段 like 查询条件 or 字段 is null
(1)动态拼sql 如:
String sql="select * from table ";
if(某个条件选种)
sql=sql+"where id='"+a+"'";
(2)模糊查询
if(查询条件==null)
查询条件="%";
else
查询条件="%"+查询条件+"%";
where=字段 like 查询条件 or 字段 is null
|
组合查询,都不填就是查全部。 hazeline(砸死我) 的说法有些地方我不是很明白,where 有效='1'这一句如何理解,我还是不大明白。
----------------------------------------------------------------
就是说你有若干个条件,你其实是有一个条件就在where后边加一个and contion。那么如果一个条件都没有呢?where 语句后边不就是空了吗?这样语法就不正确了,所以加一个始终成立的条件以便查询所有的数据,你可以写成where 1 = 1。如果你学过其他语言如C++之类就知道有一种循环就是while(1==1) {}。
----------------------------------------------------------------
就是说你有若干个条件,你其实是有一个条件就在where后边加一个and contion。那么如果一个条件都没有呢?where 语句后边不就是空了吗?这样语法就不正确了,所以加一个始终成立的条件以便查询所有的数据,你可以写成where 1 = 1。如果你学过其他语言如C++之类就知道有一种循环就是while(1==1) {}。
|
String IP1=(String) request.getAttribute("IP1");
String Type=(String) request.getAttribute("Type");
String sdate=(String) request.getAttribute("sdate");
String edate=(String) request.getAttribute("edate");
String sql= "select * from main where 1==1 "
if(IP1!=null){
sql=sql+"and Client_Ip='"+ IP1 +"' ";
}
if(Type!=null){
sql=sql+ "and Protocol_Type='"+ Type +"' ";
}
if(sdate!=null){
sql=sql+"and left(date,10)='"+ sdate +"' ";
}
if(edate!=null){
sql=sql+"and left(date,10)='"+ edate +"' ";
}
看看这条SQl语句是不是你想要的。
String Type=(String) request.getAttribute("Type");
String sdate=(String) request.getAttribute("sdate");
String edate=(String) request.getAttribute("edate");
String sql= "select * from main where 1==1 "
if(IP1!=null){
sql=sql+"and Client_Ip='"+ IP1 +"' ";
}
if(Type!=null){
sql=sql+ "and Protocol_Type='"+ Type +"' ";
}
if(sdate!=null){
sql=sql+"and left(date,10)='"+ sdate +"' ";
}
if(edate!=null){
sql=sql+"and left(date,10)='"+ edate +"' ";
}
看看这条SQl语句是不是你想要的。
|
如果是日期范围则后两项
if(sdate!=null){
sql=sql+"and left(date,10)>='"+ sdate +"' ";
}
if(edate!=null){
sql=sql+"and left(date,10)
if(sdate!=null){
sql=sql+"and left(date,10)>='"+ sdate +"' ";
}
if(edate!=null){
sql=sql+"and left(date,10)