首页 新闻 赞助 找找看

单表多条件查询sql语句的问题

0
[已关闭问题]
T_USER表中有 <BR>[USER_ID]&nbsp;[int]&nbsp;IDENTITY(1,1)&nbsp;NOT&nbsp;NULL, <BR>[USER_LOGIN_NAME]&nbsp;[varchar](50)&nbsp;COLLATE&nbsp;Chinese_PRC_CI_AS&nbsp;NOT&nbsp;NULL, <BR>[USER_REAL_NAME]&nbsp;[varchar](50)&nbsp;COLLATE&nbsp;Chinese_PRC_CI_AS&nbsp;NULL, <BR>[USER_NICK_NAME]&nbsp;[varchar](50)&nbsp;COLLATE&nbsp;Chinese_PRC_CI_AS&nbsp;NOT&nbsp;NULL, <BR>[USER_PASSWORD]&nbsp;[varchar](50)&nbsp;COLLATE&nbsp;Chinese_PRC_CI_AS&nbsp;NOT&nbsp;NULL, <BR>[SEX]&nbsp;[bit]&nbsp;NOT&nbsp;NULL, <BR>[COMMENT]&nbsp;[varchar](50)&nbsp;COLLATE&nbsp;Chinese_PRC_CI_AS&nbsp;NULL, <BR>[BIRTHDAY]&nbsp;[datetime]&nbsp;NULL, <BR>[COUNTRY]&nbsp;[int]&nbsp;NOT&nbsp;NULL, <BR>[PROVINCE]&nbsp;[int]&nbsp;NOT&nbsp;NULL <BR>这些列,现在我要在页面上设置[USER_LOGIN_NAME];[USER_NICK_NAME]&nbsp;;[BIRTHDAY]&nbsp;为条件进行查询,当条件全部为空时,查询全部,当其中一个或两个条件为空时,为空的条件不参与查询,这样的话sql怎么写?谢谢。
张亦驰‏的主页 张亦驰‏ | 初学一级 | 园豆:200
提问于:2008-04-25 17:44
< >
分享
其他回答(7)
0
在查询之前,先用程序判断页面中的哪些条件不为空,可乎?
水言木 | 园豆:586 (小虾三级) | 2008-04-25 18:25
0
添加where 1=1 ^_^
wingoo | 园豆:1513 (小虾三级) | 2008-04-25 19:01
0
sql = "select * from T_USER where 1=1 " if(!String.IsNullOrEmpty(txtUserLoginName.Text)){ sql += " and USER_LOGIN_NAME = " + txtUserLoginName.Text; } if(!String.IsNullOrEmpty(txtUserNickName.Text)) sql += " and USER_NICK_NAME = " + txtUserNickName.Text; } if(!String.IsNullOrEmpty(txtBirthday.Text)) sql += " and BIRTHDAY = " + txtBirthday.Text; }
丁学 | 园豆:18730 (专家六级) | 2008-04-26 10:20
0
丁学的方法就可以。
Kenneth Byron | 园豆:570 (小虾三级) | 2008-04-26 15:38
0
select * from T_USER where USER_LOGIN_NAME like '%@变量%' or USER_NICK_NAME like '%@变量%' or BIRTHDAY =@变量 一条语句就可以了 就这么简单
yeyang | 园豆:418 (菜鸟二级) | 2008-04-28 16:16
0
SELECT * FROM T_USER WHERE (@USER_LOGIN_NAME IS NULL OR USER_LOGIN_NAME = @USER_LOGIN_NAME) AND ( (@USER_NICK_NAME IS NULL OR USER_NICK_NAME = @USER_NICK_NAME) ) AND ( (@BIRTHDAY IS NULL OR BIRTHDAY = @BIRTHDAY) )
rex xiang | 园豆:37 (初学一级) | 2008-04-29 13:24
0
丁学的不錯,不過我認為 1=1是多余的,可能影響性能
jimeper | 园豆:260 (菜鸟二级) | 2008-05-07 05:45
0

1=1并不是多余的,如果你所有条件都没有选中,而是要查询整张表的数据,"where"就是多余的啦,而且程序是会报错的~~

hf556 | 园豆:205 (菜鸟二级) | 2010-12-04 12:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册