在电子商务网站中进行搜索时,经常要将各种条件进行组合查询,如选择了年份,价格,颜色,品牌等条件,要求输出满足条件的结果。我试图写一个SQL函数来实现这种动态组合的查询,但是还是没有能完全实现,只是能实现固定的2中组合的查询,希望各位大侠看到下面代码后能够帮忙实现下或者提供下思路:

/*根据字符串中的分隔符,将字符分割成一个列表,通过Table返回  */
create function [dbo].[fn_split](@inputstr nvarchar(4000), @seprator nvarchar(10))
returns @temp table (a nvarchar(200))
as
begin
  declare @i int
  set @inputstr = rtrim(ltrim(@inputstr))
  set @i = charindex(@seprator , @inputstr)
  while @i >= 1
  begin
    insert @temp values(left(@inputstr , @i - 1))
    set @inputstr = substring(@inputstr , @i + 1 , len(@inputstr) - @i)
    set @i = charindex(@seprator , @inputstr)
  end
  if @inputstr <> '\'
  insert @temp values(@inputstr)
  return
end

/*解析输入的字符串中的分隔符来获取搜索条件,
同时根据这些搜索条件在表T_B_ProductAttr中进行查询
目前函数只是实现了查询2个或者3个条件组成字符串的功能
我花了2个小时试图完成能将字符串分解成n个条件的查询,结果
未果,希望各位大侠能帮忙扩展成能将字符串分解成n个条件的查询
 */
CREATE function [dbo].[fn_GetProductIDByAttValue]
(
 @attval nvarchar(200),--输入条件字符
@num int--条件属性的个数
)
returns @temp table (a nvarchar(200))
as
begin
 --declare @temp table(a nvarchar(200))
 --声明临时表来存放输入的条件值
 declare @tempAttValue table(rownum int,a nvarchar(200))
 --将条件值存放在临时表并加上行号
 insert into @tempAttValue
 select  ROW_NUMBER() Over (ORDER BY a),a 
 from dbo.fn_split(@attval,',')
 --如果条件的个数为2
 if @num=2
 begin
  --声明属性参数并给其赋值
  declare @attval1 nvarchar(30)
  declare @attval2 nvarchar(30)
  select @attval1=a from @tempAttValue
  where rownum=1
  select @attval2=a from @tempAttValue
  where rownum=2
  --获取查询到的结果并返回
  insert into @temp
  select ProductID from T_B_ProductAttr
  where attrValue=@attval1 and ProductID in (
  select ProductID from T_B_ProductAttr
  where attrValue=@attval2)
 end
 else if @num=3 
 begin
  --声明属性参数并给其赋值
  declare @attval4 nvarchar(30)
  declare @attval5 nvarchar(30)
  declare @attval6 nvarchar(30)
  select @attval4=a from @tempAttValue
  where rownum=1
  select @attval5=a from @tempAttValue
  where rownum=2
  select @attval6=a from @tempAttValue
  where rownum=3
  --获取查询到的结果并返回
  insert into @temp
  select ProductID from T_B_ProductAttr
  where attrValue=@attval4 and ProductID in (
  select ProductID from T_B_ProductAttr
  where attrValue=@attval5 and ProductID in (
  select ProductID from T_B_ProductAttr
  where attrValue=@attval6
  ))
 end
 return
end

转载于:https://www.cnblogs.com/kevinGao/archive/2011/09/23/2186440.html

电子商务中遇到组合搜索的问题相关推荐

  1. ElasticSearch中全文搜索(单词搜索、多次搜索、组合搜索和权重搜索)

    全文搜索两个最重要的方面是: 相关性(Relevance) 它是评价查询与其结果间的相关程度,并根据这种相关程度对结果排名的一种能力,这种计算方式可以是 TF/IDF 方法.地理位置邻近.模糊相似,或 ...

  2. 组合搜索(combinatorial search)在算法求解中的应用

    1. 分治.动态规划的局限性 没有合适的分割方式时,就不能使用分治法: 没有合适的子问题或占用内存空间太大时,就不能用动态规划: 此时还需要回到最基本的穷举搜索算法. 穷举搜索(exhaustive ...

  3. 从淘宝数据结构来看电子商务中商品属性设计

    淘宝名词解释 产品 和 商品的区别: 淘宝标准化产品,由类目+关键属性唯一确定.如:手机类目,关键属性是品牌和型号,Nokia N95就是一个产品,nokia是品牌,N95是型号.产品除了关键属性还包 ...

  4. 电子商务中的数据仓库技术

    电子商务中的数据仓库技术 Data Warehousing for E-Business W.H. Inmon 1 电子商务的基于和挑战 ERP CRM EAI,数据仓库工程 挑战:数据量.数据周转速 ...

  5. SQL Server中的全文搜索

    SQL Server中的全文搜索 一.概述 二.全文搜索查询 三.将全文搜索查询与 LIKE 谓词进行比较 四.全文搜索体系结构 4.1.SQL Server 进程 4.2.过滤器守护程序主机进程 五 ...

  6. 位运算与组合搜索(二)

    People who play with bits should expect to get bitten. -- Jurg Nievergelt I failed math twice, never ...

  7. python 全栈开发,Day116(可迭代对象,type创建动态类,偏函数,面向对象的封装,获取外键数据,组合搜索,领域驱动设计(DDD))...

    昨日内容回顾 1. 三个类 ChangeList,封装列表页面需要的所有数据.StarkConfig,生成URL和视图对应关系 + 默认配置 AdminSite,用于保存 数据库类 和 处理该类的对象 ...

  8. stark组件开发之组合搜索基本显示

    数据的获取,上一篇,已经有了!然后就是,如何进行展示的问题. 到了展示这里,又有了新的问题, 因为从数据库,取得的数据. 分为 queryset 和 tuple 两种数据结构. tuple 中,只是字 ...

  9. 计算机二级科目电子商务,计算机二级Web数据在电子商务中的应用解析

    要参加考试的同学们,出国留学网为你整理"计算机二级Web数据在电子商务中的应用解析",供大家参考学习,更多资讯请关注我们网站的更新哦! 计算机二级Web数据在电子商务中的应用解析 ...

最新文章

  1. 盘点当下大热的 7 大 Github 机器学习『创新』项目
  2. ThinkPad安装deepin操作系统报错解决方法
  3. 实用计算机相关日语词汇,计算机相关日语词汇整理2
  4. 使用MinGW编译Psycopg2
  5. MySQL安装之没有配置向导
  6. 作者:周绮凤,女,博士,厦门大学自动化系副教授。
  7. 不使用输入框如何实现下拉_使用INFINITE AJAX SCROLL实现下拉加载效果
  8. 《云服务器》与《传统服务器》的区别
  9. 13.文本文件和二进制文件的区别
  10. Ubuntu18.04-albert编译安装记录
  11. 【I.MX6ULL】6ull 加载 linux 驱动模块失败
  12. svchost.exe小记
  13. STM32F407单片机移植ADS1115驱动程序
  14. MySQL DUAL表的作用
  15. django-haystack 对 多对多字段( ManyToManyField )进行索引
  16. 亚马逊账号关联怎么办?多账号如何自查?
  17. Python练习册(二)
  18. 信息隐藏的原理与应用
  19. 面试必备SQL调优方案
  20. 十六进制 转 八进制

热门文章

  1. 包括 一个 20像素的黑条条
  2. gtf与gff3文件【格式】【转换】
  3. NCBI dbGap数据下载记录
  4. 疯狂python讲义
  5. Visual Studio中将打开的代码与类文件进行关联
  6. SQL数据库无法附加 823错误修复 连接中断
  7. 北京集训:20180323
  8. 【bzoj2751】[HAOI2012]容易题(easy) 数论,简单题
  9. 【读薄Effective Java】创建和销毁对象
  10. 传送门(portal)