A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周敏_.net 黑马帝   /  2011-11-18 01:16  /  2985 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 周敏_.net 于 2011-11-24 06:58 编辑

页面上面有一个查询按钮,旁边有两个textbox输入查询的条件,第一个textbox按姓名模糊查询,第二个textbox按地址模糊查询,只在第一个textbox输入值只按姓名查询,只在第二个textbox输入值就按地址查询,两个都输入值就按两个条件查询。请问怎么用一条SQL语句写出来。谢谢了,本人新手请各位高手指教

评分

参与人数 2技术分 +2 收起 理由
陈涛 + 1
杨恩锋 + 1

查看全部评分

13 个回复

倒序浏览
只按姓名查询: select * from [TableName] where Name='####'
只按地址查询: select * from [TableName] where Address='####'

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

可以在程序中判断下用户输入的是一个条件还是两个条件, 然后再选择执行哪条SQL语句

评分

参与人数 2技术分 +2 收起 理由
陈涛 + 1
杨恩锋 + 1

查看全部评分

回复 使用道具 举报
干嘛非一条语句写出来,  一条可以写出来吗
回复 使用道具 举报
朱勋 黑马帝 2011-11-18 08:49:40
板凳
两个字段在一个表么?在的话一个表查询就好了,没再多表查询,参数化查询,模糊用like

评分

参与人数 2技术分 +2 收起 理由
陈涛 + 1
杨恩锋 + 1

查看全部评分

回复 使用道具 举报
陈涛 黑马帝 2011-11-18 10:28:24
报纸
通过传参,  把接受的参数 拼接到SQL语句里。
回复 使用道具 举报
经睿 黑马帝 2011-11-18 17:01:11
地板
SELECT * FROM TABLENAME WHERE NAME LIKE '%###%' AND ADDRESS LIKE '%###%'

评分

参与人数 1技术分 +1 收起 理由
陈涛 + 1

查看全部评分

回复 使用道具 举报
朱陈伟 黑马帝 2011-11-18 19:39:35
7#
姓名查询: select * from [所需查询的表名] where Name='所需查询的条件'
地址查询: select * from [所需查询的表名] where Address='所需查询的条件'
如果需要两个同时查询:select * from [所需查询的表名] where Name='所需查询的条件1' and Address='所需查询的条件2'

评分

参与人数 1技术分 +1 收起 理由
陈涛 + 1

查看全部评分

回复 使用道具 举报
按照姓名模糊查询:SELECT * FROM 表名 WHERE NAME LIKE '***%***'
按照地址模糊查询:SELECT * FROM 表名 WHERE ADDRESS  LIKE '***%***'
按照姓名和地址模糊查询:SELECT * FROM 表名 WHERE NAME LIKE '***%***' AND ADDRESS LIKE '***%***'
回复 使用道具 举报
杨楠 金牌黑马 2011-11-19 16:01:58
9#
感觉这不是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
{一起查。。。}



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


第一个文本框为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:42
14#
select * from table_name where name  like  '%姓名%' and address like '%地址%'
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马