T-SQL---多值模糊查询的处理
2017-04-20 09:31
295 查看
多值模糊查询的处理
所谓多值模糊查询,就是应用程序中传递过来多个参数,对这些参数做拆分,拆分之后,对拆分结果的key值分别做模糊查询处理
对于精确匹配时,不管是单个Key值还是多个Key值,都很容易处理,备选方案也很多
对于模糊查询,单个key值也很容易,也就是 ……where name like '%parameter%'(不要告诉我全模糊效率低之类的,我这里不是做性能对比的)
但是对于多个Key值的模糊处理,就不是太直接了,比如name字段,输入'三,四,五',要求分别按照三,四,五三个字符做模糊匹配
多值模糊查询可以参考如下的方式处理,欢迎提供更好的办法,谢谢了
所谓多值模糊查询,就是应用程序中传递过来多个参数,对这些参数做拆分,拆分之后,对拆分结果的key值分别做模糊查询处理
对于精确匹配时,不管是单个Key值还是多个Key值,都很容易处理,备选方案也很多
对于模糊查询,单个key值也很容易,也就是 ……where name like '%parameter%'(不要告诉我全模糊效率低之类的,我这里不是做性能对比的)
但是对于多个Key值的模糊处理,就不是太直接了,比如name字段,输入'三,四,五',要求分别按照三,四,五三个字符做模糊匹配
多值模糊查询可以参考如下的方式处理,欢迎提供更好的办法,谢谢了
CREATE TABLE [dbo].[Student]( [S#] [varchar](50) NULL, [Sname] [varchar](50) NULL, [Ssex] [varchar](2) NULL ) INSERT INTO Student VALUES (1,'张三',1) INSERT INTO Student VALUES (2,'李四',1) INSERT INTO Student VALUES (3,'王五',1) INSERT INTO Student VALUES (4,'赵六',1) INSERT INTO Student VALUES (5,'孙七',1) --精确匹配的话,不管是单值还是多值,都很好处理 select * from Student where Sname in ('张三','李四') --单值模糊的好处理 select * from Student where Sname Like '%五%' --多值模糊匹配,就没有这么直接了 --所谓的多值模糊匹配,就是外面传递进来多个值,这些值差分开之后,每个值都做模糊查询 --SQL既要写满足功能性需求,又要简明的清晰,一开始还想写函数什么玩意的, --后来想了想,可以这么处理 ;with CTEName as ( --这是一个字符串拆分函数 select id,concat('%',s,'%') as name from dbo.f_splitStrToTable('四,五,六',',') ) select * from Student where exists ( select 1 from CTEName where Sname like name ) --查询结果 S# Sname Ssex 2 李四 1 3 王五 1 4 赵六 1 (3 row(s) affected)
相关文章推荐
- SQL语句中的单引号处理以及模糊查询
- 动态SQL— —模糊查询语句(存储过程)中关于百分号%的处理
- java中对SQL模糊查询通配符%的处理
- sql 模糊查询like 如何处理 NULL
- SQL Server之 (二) SQL语句 模糊查询 空值处理 聚合函数
- CI中自定义SQL查询,LIKE模糊查询的处理
- SQL模糊查询时特殊字符的处理方式总结
- sql语句中模糊查询Like中通配符的处理
- SQL语句中的单引号处理以及模糊查询
- T-SQL---多值模糊查询的处理
- 如何在SQL模糊查询中忽略对大小写字符的处理
- sql 模糊查询like 如何处理 NULL
- 基于hibernate的基本dao接口与实现 及 sql模糊查询特殊字符处理 及 struts 特殊字符在界面正常回显
- 模糊查询/空值处理/数据排序oreder by/数据分组group by/SQL语句执行顺序
- SQL模糊查询时特殊字符的处理方式总结
- 动态SQL模糊查询语句(存储过程)中关于百分号%的处理
- sql特殊字符的模糊查询处理
- 模糊查询SQL语句
- 实现多条件模糊查询SQL语句
- SQL SERVER2000教程-第五章 处理数据 第二十二节 利用UNION对多条SQL查询语句合并生成表