黑马程序员技术交流社区

标题: 求教一条SQL语句 [打印本页]

作者: 周敏_.net    时间: 2011-11-18 01:16
标题: 求教一条SQL语句
本帖最后由 周敏_.net 于 2011-11-24 06:58 编辑

页面上面有一个查询按钮,旁边有两个textbox输入查询的条件,第一个textbox按姓名模糊查询,第二个textbox按地址模糊查询,只在第一个textbox输入值只按姓名查询,只在第二个textbox输入值就按地址查询,两个都输入值就按两个条件查询。请问怎么用一条SQL语句写出来。谢谢了,本人新手请各位高手指教
作者: 李荣壮    时间: 2011-11-18 08:05
只按姓名查询: select * from [TableName] where Name='####'
只按地址查询: select * from [TableName] where Address='####'

两个条件一起查询: select * from [TableName] where Name='####' and Address='####'

可以在程序中判断下用户输入的是一个条件还是两个条件, 然后再选择执行哪条SQL语句
作者: 李荣壮    时间: 2011-11-18 08:08
干嘛非一条语句写出来,  一条可以写出来吗
作者: 朱勋    时间: 2011-11-18 08:49
两个字段在一个表么?在的话一个表查询就好了,没再多表查询,参数化查询,模糊用like
作者: 陈涛    时间: 2011-11-18 10:28
通过传参,  把接受的参数 拼接到SQL语句里。
作者: 经睿    时间: 2011-11-18 17:01
SELECT * FROM TABLENAME WHERE NAME LIKE '%###%' AND ADDRESS LIKE '%###%'
作者: 朱陈伟    时间: 2011-11-18 19:39
姓名查询: select * from [所需查询的表名] where Name='所需查询的条件'
地址查询: select * from [所需查询的表名] where Address='所需查询的条件'
如果需要两个同时查询:select * from [所需查询的表名] where Name='所需查询的条件1' and Address='所需查询的条件2'

作者: 9881008杜鹏    时间: 2011-11-19 05:03
按照姓名模糊查询:SELECT * FROM 表名 WHERE NAME LIKE '***%***'
按照地址模糊查询:SELECT * FROM 表名 WHERE ADDRESS  LIKE '***%***'
按照姓名和地址模糊查询:SELECT * FROM 表名 WHERE NAME LIKE '***%***' AND ADDRESS LIKE '***%***'
作者: 杨楠    时间: 2011-11-19 16:01
感觉这不是Sql语句的问题吧,是在程序里控制吧
if(string.isnulloremtey(txt1.text)&&string.isnulloremtey(txt2.text))
{messagebox("请输入查询条件");
return;}
else if(string.isnulloremtey(txt1.text))
{只按地址查}
else if(string.isnulloremtey(txt2.text))
{只按姓名查}
else
{一起查。。。}




作者: 9881008杜鹏    时间: 2011-11-19 16:21
这个问题,在我初学的时候也遇到过,我介意的方法是在前台做判断然后再做后台查询,没必要做就用一条查询来解决,能在前台做的尽量在前台做,如果按一条来处理的话效果不一定好
作者: 9881008杜鹏    时间: 2011-11-20 08:50
同学我想到一个很好的方法:通过stringbuilder方法拼接下,如:StringBuilder sql=new StirngBuilder();   sql.AppendLine("select * from Student where 1=1");
在通过判断的方法如果有就sql.appendline()方法解决。
作者: laoyang    时间: 2011-11-20 10:56
前台判断并且拼接SQL语句,楼上的说的很清楚了
作者: Luck_c    时间: 2011-11-20 13:02


第一个文本框为txt1
第二个文本框为txt2
string txtName="1";
string txtDiZhi="1";
string txtNameValue="1";
string txtDiZhiValue="1";

if(txt1.text.trim()!="")
{
        txtName="[Name]";
        txtNameValue=txt1.text.trim();
}
if(txt2.text.trim()!="")
{
        txtDiZhi="[DiZhi]";       
        txtDiZhiValue=txt2.text.trim();
}

string sql="select * from [table] where "+txtName+" like '%"+txtNameValue+"%' and "+txtDiZhi+" like '%"+txtDiZhiValue+"%' ";


作者: 乔克    时间: 2011-11-23 23:41
select * from table_name where name  like  '%姓名%' and address like '%地址%'




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2