.net中,sql语句进行模糊查询

jesseqj 2008-04-14 01:48:32
在用sql语句进行多条件模糊查询的时候,只要有一个条件符合,就从库中把所有相关的数据取出来
比如说有三个查询条件,姓名,学号,地址。在通过这三个条件查询时,如果输入框中输入姓名为“张”,学号为“1”,地址为空,点击查询,应该将数据库中所有满足模糊条件:姓名中有“三”,学号中有”1“的都搜索出来,而不是将同时满足模糊条件:姓名中有“三”,学号中有”1“的记录搜出来。请问各位大虾这代码怎么写?
...全文
290 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
hery2002 2008-04-14
  • 打赏
  • 举报
回复
1.做存储过程在存储过程中实现动态SQL,做SQL拼接这个上面已经有了.
2.在程序端做SQL拼接一下.
根据查询条件,

string strName,strNo,strAddr;
string strSqlWhere;
if (!string.IsNullOrEmpty(strName)) strSqlWhere = strSqlWhere + " NAME LIKE " + strName.ToString().Trim();
if (!string.IsNullOrEmpty(strNo))
{
if (string.IsNullOrEmpty(strSqlWhere)) strSqlWhere = strSqlWhere + " NO LIKE " + strNo.ToString().Trim();
else strSqlWhere = strSqlWhere + " OR NO LIKE " + strNo.ToString().Trim();
}

if (!string.IsNullOrEmpty(strAddr))
{
if (string.IsNullOrEmpty(strSqlWhere)) strSqlWhere = strSqlWhere + " ADDR LIKE " + strAddr.ToString().Trim();
else strSqlWhere = strSqlWhere + " OR ADDR LIKE " + strAddr.ToString().Trim();
}

if (!string.IsNullOrEmpty(strSqlWhere)) strSqlWhere = " WHERE " + strSqlWhere;
jesseqj 2008-04-14
  • 打赏
  • 举报
回复
我去试试看,谢谢个位了
insus 2008-04-14
  • 打赏
  • 举报
回复
希望下面这个能帮得上你的一些忙:
http://download.csdn.net/source/408631
astray555 2008-04-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 jesseqj 的回复:]
关键是现在我有一个条件地址是空啊,查询的时候会将全部数据取出来
还有就是查询的组合太多,我不可能为每个组合写个sql语句吧
[/Quote]
我那个就是有处理空的情况,空则不加条件
jesseqj 2008-04-14
  • 打赏
  • 举报
回复
select * from table where 姓名 like '%三%' or 学号 like '%1%' or 地址 like '%%'
这个地址是空的,查的时候去将库中全部数据取出来的
jacker79 2008-04-14
  • 打赏
  • 举报
回复
Select * from 表 where (姓名 like '%三%' or 姓名=null) and ( 学號 like '%1%' or 学號=null) and (地址 like '%三%' or 地址=null)
wo594261 2008-04-14
  • 打赏
  • 举报
回复
有“三”或者有“1”就查出来
select * from table where 姓名 like '%三%' or 学好 like '%1%'
姓名有“三”,同时学号有“1”
select * from table where 姓名 like '%三%' and 学好 like '%1%'
jesseqj 2008-04-14
  • 打赏
  • 举报
回复
关键是现在我有一个条件地址是空啊,查询的时候会将全部数据取出来
还有就是查询的组合太多,我不可能为每个组合写个sql语句吧
astray555 2008-04-14
  • 打赏
  • 举报
回复
用存储过程,开头省了

begin
set nocount on
declare @s nvarchar(4000)
select @s='Select * from table where 1=1'
+case when @Name>'' then ' and Name like @Name' else '' end
+case when @id>'' then ' and id like @id' else '' end
+case when @address>'' then ' and address like @address' else '' end

exec sp_executesql @s,
N'@Name varchar(50)=null,
@id varchar(50)=null,
@address varchar(50)
'
,@Name,@id,@address
end
tyyhong 2008-04-14
  • 打赏
  • 举报
回复
select 姓名 like '%张%' or 学好 like '%1%'
virusswb 2008-04-14
  • 打赏
  • 举报
回复
有“三”或者有“1”就查出来
select * from table where 姓名 like '%三%' or 学好 like '%1%'
姓名有“三”,同时学号有“1”
select * from table where 姓名 like '%三%' and 学好 like '%1%'
jinjazz 2008-04-14
  • 打赏
  • 举报
回复
and是同时,or是随便一个
hotit 2008-04-14
  • 打赏
  • 举报
回复
name like '%三%' or number like '%1%'
一品梅 2008-04-14
  • 打赏
  • 举报
回复
like or ...

62,041

社区成员

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

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

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

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