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

philchang718 2008-04-25 03:33:08
T_USER表中有
[USER_ID] [int] IDENTITY(1,1) NOT NULL,
[USER_LOGIN_NAME] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[USER_REAL_NAME] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[USER_NICK_NAME] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[USER_PASSWORD] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[SEX] [bit] NOT NULL,
[COMMENT] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[BIRTHDAY] [datetime] NULL,
[COUNTRY] [int] NOT NULL,
[PROVINCE] [int] NOT NULL
这些列,现在我要在页面上设置[USER_LOGIN_NAME];[USER_NICK_NAME] ;[BIRTHDAY] 为条件进行查询,当条件全部为空时,查询全部,当其中一个或两个条件为空时,为空的条件不参与查询,这样的话sql怎么写?谢谢。
...全文
156 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
knowledge_Is_Life 2008-05-01
  • 打赏
  • 举报
回复
以后需再关注,现在先帮你顶一下
UltraBejing 2008-04-30
  • 打赏
  • 举报
回复
这个简单啊,网上搜一下就得到答案了.
philchang718 2008-04-29
  • 打赏
  • 举报
回复
能直接写sql语句吗?
conan304 2008-04-25
  • 打赏
  • 举报
回复
create procedure proc_find
@user_login_name varchar(50)=null,
@user_nick_name varchar(50)=null
@birthday varchar(50)=null
AS

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)
wolf_410 2008-04-25
  • 打赏
  • 举报
回复

string sqlstr="";
if(USER_LOGIN_NAME!=""&&USER_LOGIN_NAME!=null)
sqlstr+=" and USER_LOGIN_NAME='"+USER_LOGIN_NAME+"'";
if(USER_NICK_NAME!=""&&USER_NICK_NAME!=null)
sqlstr+=" and USER_NICK_NAME='"+USER_NICK_NAME+"'";
if(BIRTHDAY!=""&&BIRTHDAY!=null)
sqlstr+=" and BIRTHDAY='"+BIRTHDAY+"'";
sqlstr="select * from t_user where 1=1"+sqlstr;
zhangqingfu 2008-04-25
  • 打赏
  • 举报
回复
给你个简单而实用的:
SELECT *
FROM t_user
WHERE ISNULL(@loginName, USER_LOGIN_NAME) = USER_LOGIN_NAME
AND ISNULL(@nickName, USER_NICK_NAME) = USER_NICK_NAME
AND ISNULL(@birthday, BIRTHDAY) = BIRTHDAY
changjiangzhibin 2008-04-25
  • 打赏
  • 举报
回复

private string SearchSql(string loginName,string nickName,string birthday)
{
string sql = "select * from t_user";
bool hasSearch = false;
if(loginName.Length > 0)
{
hasSearch = true;
sql += " where USER_LOGIN_NAME = '"+loginName+"'";
}
if(nickName.Length > 0)
{
if(hasSearch)
{
sql += " and USER_NICK_NAME = '"+nickName+"'";
}
else
{
sql += " where USER_NICK_NAME = '"+nickName+"'";
hasSearch = true;
}
}
if(birthday.Length > 0)
{
if(hasSearch)
{
sql += " and BIRTHDAY='"+birthday+"'";
}
else
{
sql += " where BIRTHDAY='"+birthday+"'";
}
}
}
cylot 2008-04-25
  • 打赏
  • 举报
回复
if(USER_LOGIN_NAME==""&&USER_NICK_NAME==""&&BIRTHDAY=="")
sqlText="Select * from T_USER";
else if(USER_LOGIN_NAME!="")
sqlText="Select * from T_USER where USER_LOGIN_NAME="+USER_LOGIN_NAME;
else if(USER_NICK_NAME)
sqlText+=" and USER_NICK_NAME="+USER_NICK_NAME;
else if(BIRTHDAY!="")
sqlText+=" and BIRTHDAY="+BIRTHDAY;

62,067

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧