问题描述
请问大家:我有好几个textbox,都是写查询限制条件的,都指定了数据库的某字段,现在我想让有某个(或者好几个)textbox为空时跳过那个字段查询,这个查询语句该如何写啊
解决方案
解决方案二:
你不把那个字段作为查询条件不就完了
解决方案三:
引用1楼的回复:
你不把那个字段作为查询条件不就完了
可能是我表达的不太清楚,textbox的值我可以填写可以不填写,不是任何时候都为空
解决方案四:
是不是说有值就作为查询条件,没有就不作为查询条件,那样用string.IsNullOrEmpty()判断下,拼接sql
解决方案五:
引用2楼的回复:
引用1楼的回复:你不把那个字段作为查询条件不就完了可能是我表达的不太清楚,textbox的值我可以填写可以不填写,不是任何时候都为空
根据为不为空分别动态拼接不同的sql
解决方案六:
给个方案比如你有这几个字段a,b,c而你查询selecta,b,cfromtbwherea=''andb=''你可以这样试试selecta,b,cfromtbwhere(a+b+c)like'%这是写你相要匹配的值%'
解决方案七:
有遇到同样问题学习中谢谢支持
解决方案八:
使用stringbuilder数据类型保存Sql语句,然后用判断语句根据不同的情况Appline语句
解决方案九:
引用3楼的回复:
是不是说有值就作为查询条件,没有就不作为查询条件,那样用string.IsNullOrEmpty()判断下,拼接sql
您说的意思是这样的,但是拼接sql就是我的难点啊
解决方案十:
引用4楼的回复:
引用2楼的回复:引用1楼的回复:你不把那个字段作为查询条件不就完了可能是我表达的不太清楚,textbox的值我可以填写可以不填写,不是任何时候都为空根据为不为空分别动态拼接不同的sql
我现在就在拼接这边卡住了
解决方案十一:
我觉得在代码中不用任何逻辑判断只用SQL就可以达到,用代码比较麻烦.selecta,b,cfrommytablewhere(a=:Aorb=:Borc=:C)andaisnotnullandbisnotnullandcisnotnull;
解决方案十二:
引用5楼的回复:
给个方案比如你有这几个字段a,b,c而你查询selecta,b,cfromtbwherea=''andb=''你可以这样试试selecta,b,cfromtbwhere(a+b+c)like'%这是写你相要匹配的值%'
你这里只是一个textbox做模糊查询把
解决方案十三:
比如要查询的条件是@a1,@a2,@a3select*fromtable(你要查询的表)where1=1and(isnull(@a1,'')==''ortable.某个字段=@a1)and(isnull(@a2,'')==''ortable.某个字段=@a2)and(isnull(@a3,'')==''ortable.某个字段=@a2)
解决方案十四:
比如要查询的条件是@a1,@a2,@a3select*fromtable(你要查询的表)where1=1and(isnull(@a1,'')=''ortable.某个字段=@a1)and(isnull(@a2,'')=''ortable.某个字段=@a2)and(isnull(@a3,'')=''ortable.某个字段=@a2)
解决方案十五:
引用10楼的回复:
我觉得在代码中不用任何逻辑判断只用SQL就可以达到,用代码比较麻烦.SQLcodeselecta,b,cfrommytablewhere(a=:Aorb=:Borc=:C)andaisnotnullandbisnotnullandcisnotnull;
如果我某一次查询不需要A列的时候不就报错了吗
其他方案:
引用9楼的回复:
引用4楼的回复:引用2楼的回复:引用1楼的回复:你不把那个字段作为查询条件不就完了可能是我表达的不太清楚,textbox的值我可以填写可以不填写,不是任何时候都为空根据为不为空分别动态拼接不同的sql我现在就在拼接这边卡住了
类似如下这种stringstrSql="select*fromtablewhere1=1";stringstrW="";if(条件1!="")strW+="and字段1='"+条件1+"'";if(条件2!="")strW+="and字段2='"+条件2+"'";strSql+=strWdatatabledt=run(strsql);
其他方案:
引用12楼的回复:
比如要查询的条件是@a1,@a2,@a3select*fromtable(你要查询的表)where1=1and(isnull(@a1,'')==''ortable.某个字段=@a1)and(isnull(@a2,'')==''ortable.某个字段=@a2)and(isnull(@a3,'')==''ortable.某个字段=@a2)
谢谢。我试试看
其他方案:
引用15楼的回复:
引用9楼的回复:引用4楼的回复:引用2楼的回复:引用1楼的回复:你不把那个字段作为查询条件不就完了可能是我表达的不太清楚,textbox的值我可以填写可以不填写,不是任何时候都为空根据为不为空分别动态拼接不同的sql我现在就在拼接这边卡住了类似如下这种stringstrSql="select……
哦,明白了。谢谢