如何优化这个模糊查询

屌丝女士111 2010-04-13 04:56:15




@selectIndex 是传入的参数 如果是0 就模糊查 LoginName 对应的值 @searchfilter

and LoginName like case @selectIndex when 0 then '%'+@searchfilter+'%' else LoginName end

and f.Agentid like case @selectIndex when 1 then '%'+@searchfilter+'%' else f.Agentid end

and u.Tel like case @selectIndex when 2 then '%'+@searchfilter+'%' else u.Tel end

and b.CName like case @selectIndex when 3 then '%'+@searchfilter+'%' else b.CName end

and u.Mobile like case @selectIndex when 4 then '%'+@searchfilter+'%' else u.Mobile end

and u.UserName like case @selectIndex when 5 then '%'+@searchfilter+'%' else u.UserName end

and b.[Address] like case @selectIndex when 6 then '%'+@searchfilter+'%' else b.[Address] end



这样似乎很慢

如何优化
...全文
195 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
一一一一 2010-09-03
  • 打赏
  • 举报
回复
学习了
屌丝女士111 2010-04-15
  • 打赏
  • 举报
回复
((LoginName like '%'+@searchfilter+'%' AND @selectIndex=0) OR 
(cast(f.Agentid as varchar) like '%'+cast(@searchfilter as varchar)+'%' AND @selectIndex=1) OR
(u.Tel like '%'+@searchfilter+'%' AND @selectIndex=2) OR
(u.Mobile like '%'+@searchfilter+'%' AND @selectIndex=3) OR
(b.CName like '%'+@searchfilter+'%' AND @selectIndex=4) OR
(u.UserName like '%'+@searchfilter+'%' AND @selectIndex=5) OR
(b.[Address] like '%'+@searchfilter+'%' AND @selectIndex=6))
虽然11楼的可以 但是那个写在我的查询里面的时候报like 附近错误

所以请教了别人的查询 这个也不错



这个不错哦
Tony3820 2010-04-15
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jiangshun 的回复:]
SQL code
case @selectIndex
when 0 then LoginName like '%'+@searchfilter+'%'
when 1 then f.Agentid like '%'+@searchfilter+'%'
when 2 then u.Tel like '%'+@searchfilter+'%'
when 3 t……
[/Quote]

顶,这好可以用
zlqyizhizailushang 2010-04-15
  • 打赏
  • 举报
回复
每个都走了,11楼的应该行
ZHUKY 2010-04-15
  • 打赏
  • 举报
回复
顶顶顶.........Mark!~~
屌丝女士111 2010-04-15
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jiangshun 的回复:]
SQL code
case @selectIndex
when 0 then LoginName like '%'+@searchfilter+'%'
when 1 then f.Agentid like '%'+@searchfilter+'%'
when 2 then u.Tel like '%'+@searchfilter+'%'
when 3 t……
[/Quote]


问问哦 这个在一个完整的sql 里面如何写 ??

select * from table where id=@id and

case @selectIndex
when 0 then LoginName like '%'+@searchfilter+'%'
when 1 then f.Agentid like '%'+@searchfilter+'%'
when 2 then u.Tel like '%'+@searchfilter+'%'
when 3 then b.CName like '%'+@searchfilter+'%'
when 4 then u.Mobile like '%'+@searchfilter+'%'
when 5 then u.UserName like '%'+@searchfilter+'%'
when 6 then b.[Address] like '%'+@searchfilter+'%'
end

这样写有错误吧???
Toney520 2010-04-14
  • 打赏
  • 举报
回复
推荐11楼
屌丝女士111 2010-04-14
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jiangshun 的回复:]
SQL code
case @selectIndex
when 0 then LoginName like '%'+@searchfilter+'%'
when 1 then f.Agentid like '%'+@searchfilter+'%'
when 2 then u.Tel like '%'+@searchfilter+'%'
when 3 t……
[/Quote]


嗯 这个不错 我试试
jiangshun 2010-04-13
  • 打赏
  • 举报
回复
case @selectIndex 
when 0 then LoginName like '%'+@searchfilter+'%'
when 1 then f.Agentid like '%'+@searchfilter+'%'
when 2 then u.Tel like '%'+@searchfilter+'%'
when 3 then b.CName like '%'+@searchfilter+'%'
when 4 then u.Mobile like '%'+@searchfilter+'%'
when 5 then u.UserName like '%'+@searchfilter+'%'
when 6 then b.[Address] like '%'+@searchfilter+'%'
end
cppinxp 2010-04-13
  • 打赏
  • 举报
回复
适合在程序里做
屌丝女士111 2010-04-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 cyrix_wxm 的回复:]
我以为是根据不同index 查询不同的字段呢
这样的话用if 可以少走几行代码
[/Quote]

嗯 .............所以
cyrix_wxm 2010-04-13
  • 打赏
  • 举报
回复
我以为是根据不同index 查询不同的字段呢
这样的话用if 可以少走几行代码
cyrix_wxm 2010-04-13
  • 打赏
  • 举报
回复
我晕 每个case when都要让走?
屌丝女士111 2010-04-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 cyrix_wxm 的回复:]
declare @sortField varchar(20)
if (@selectIndex = 0)
{
@sortField ='sadfsdafasdf';
}
[/Quote]

...................................
if 还没有case when then 效率高哦.........
cyrix_wxm 2010-04-13
  • 打赏
  • 举报
回复
declare @sortField varchar(20)
if (@selectIndex = 0)
{
@sortField ='sadfsdafasdf';
}
屌丝女士111 2010-04-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jiangshun 的回复:]
你想查询什么?

这些字段包含@searchfilter的吗?
[/Quote]

我这里只是查询的一部分 通过@selectIndex 来看 要查哪个字段的值
jiangshun 2010-04-13
  • 打赏
  • 举报
回复
你想查询什么?

这些字段包含@searchfilter的吗?
屌丝女士111 2010-04-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cyrix_wxm 的回复:]
我晕 这一步直接在代码中做啊
直接传入字符串
[/Quote]

那样就要拼字符串了 ~~可以有更好的方法么?..........
cyrix_wxm 2010-04-13
  • 打赏
  • 举报
回复
我晕 这一步直接在代码中做啊
直接传入字符串
汽车租赁系统的开发过程中,采用B/S架构,主要使用Java主流技术进行开发,结合最新流行的SSM框架。使用Mysql数据库和Eclipse或者IDEA开发环境。包括登录、首页、客户管理、车辆管理、汽车出租、出租单管理、汽车入库、检查单管理、系统管理等功能,适合二次开发课程设计、毕业设计等。业务模块1、客户管理客户列表客户分页和模糊查询客户添加、修改、删除导出客户数据2、车辆管理车辆列表车辆车辆分页和模糊查询车辆添加、修改、删除3、汽车出租根据客户身份证查询所有未出租的车辆信息进行出租4、出租单管理多条件的模糊查询和分页出租单的修改、删除、导出5、检查单管理多条件模糊查询和分页检查单修改导出检查单系统模块1、用户登陆校验用户名和密码登陆成功将登陆信息写入登陆日志未登录进行拦截2、菜单管理全查询菜单和根据左边的树查询不同菜单菜单的添加、修改、删除3、角色管理全查询角色和模糊查询角色的添加、修改、删除4、用户管理全查询用户和模糊查询用户的添加、修改、删除以及重置密码5、数据源的监控(druid monitor)6、统计分析客户地区统计分析公司年度月份销售额统计分析业务员年度销售额统计分析 开发技术和环境开发环境操作系统:Windows/Mac OS编程语言:Java开发工具:IDEA、Navicat项目构建:Maven 3.5.2服务器:Tomcat 8.5数据库:MySQL 8.0开发技术后台技术选型:SSM(Spring SpringMVC Mybatis)前端技术选型:LayUI、dtree、echarts测试账号管理员: admin/123456业务员:zhangsan/123456 部分运行截图分为管理员与业务员角色,用于汽车租赁后台管理系统,功能相对完善!登录 首页 客户管理车辆管理 车辆添加 汽车出租 出租单管理 汽车入库 检查单管理菜单管理 角色管理 用户管理 日志管理 公告管理 数据源监控客户地区统计分析 公司年度月份销售额统计分析业务员年度销售额论文截图源码截图数据库截图     

62,046

社区成员

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

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

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

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