这样的sql应该怎么写?兄弟们帮帮忙
表里面有NAME,PRODUCT,PRICE,DATE 4个字段,在操作界面上也相应的画出4个TEXTBOX,可供填入检索条件,如果只写其中一个就按一个条件查询,如果写两个条件就按两个条件查询,如果是3个就按3个条件查询,如果是全部就按全部条件查询.这样的程序片断应该怎么写??????
[解决办法]
string strSql= "select * from tb ";
string filter=string.Empty;
if(txtName.Text!=string.Empty)
{
filter= " where NAME like '% "+txtName.Text+ "% ' ";
}
if(txtPRODUCT.Text!=string.Empty)
{
if(filter.Length> 0)
{
filter+= " and ";
}
filter+= " PRODUCT like '% "+txtPRODUCT.Text+ "% ' ";
}
if(txtPRICE.Text!=string.Empty)
{
if(filter.Length> 0)
{
filter+= " and ";
}
filter+= " PRICE like '% "+txtPRICE.Text+ "% ' ";
}
....
....
strSql=filter==string.Empty?strSql:strSql+filter;
//执行strSql返回结果,剩下略
[解决办法]
给你一部分吧
Dim s_SQL As String
s_SQL = "SELECT * FROM zzz_View_Gzcx WHERE 1=1 "
If txtYgbh.Text.Trim.Length <> 0 Then
s_SQL = s_SQL & " AND 员工编号 like '% " & txtYgbh.Text.Trim & "% ' "
End If
If txtYgxm.Text.Trim.Length <> 0 Then
s_SQL = s_SQL & " AND 员工姓名 like '% " & txtYgxm.Text.Trim & "% ' "
End If
[解决办法]
对于这个,我一般都是采用比较笨的方法;
先确定textbox1=name
textbox2=PRODUCT
textbox3=PRICE
textbox4=date
sql中的like
如果你的textbox1中有数据,而tb2,tb3,tb4都没有,
那么就应该是
select * from tablename
where name like @tb1 and PRODUCT like @tb2
and PRICE like @tb3 and date like @tb4
那么当前tb1是有值的,那么你的name like tb1.value
而tb2,tb3,tb4没有值,那么你可以传入的参数都是 "% "~
这样做是有缺点的。就是sql执行效率的问题。如果不顾及的话,可以这样做。
[解决办法]
简单的技巧:
select * from tablename where 1=1
其他的条件就都可以用 AND 拼接了.
[解决办法]
“where 1=1 ” 这样的代码毫无意义,垃圾代码就是指这种.