sql server在存储过程中实现模糊查询的方法:1、Wildcard操作符;2、between;3、in;4、全文搜索;5、使用存储过程。Wildcard操作符是SQL Server支持的最基本的模糊查询操作符,可以使用LIKE和=操作符实现模糊查询。
一、sql server在存储过程中实现模糊查询的方法
1、Wildcard操作符
Wildcard操作符:Wildcard是SQL Server支持的最基本的模糊查询操作符,可以使用LIKE和=操作符实现模糊查询。
使用LIKE操作符实现以“SMIT”为开头的姓名查询语句:
SELECT * FROM Customers WHERE LastName LIKE 'SMIT%'
使用=操作符实现精确匹配查询语句:
SELECT * FROM Customers WHERE LastName = 'Smith'
2、between
把某一字段的值在特定范围内的记录查询出来:
select * from ScoreList
where csharp between 80 and 90
--在ScoreList数据库中查询csharp成绩在80~90之间的,列出全部列
select StudentName, StudentAdress from Students
where Birthday between '1972-7-7' and '2022-7-7'
--在Students数据库中查询Birthday在1972-7-7到 2022-7-7之间的,列出全部列两项
3、in
把某一字段中内容与所列出的查询内容列表匹配的记录查询出来:
select StudentName, StudentAdress, Age from Students
where Age in (21,22,23)
--在Students数据库中查询Age是21,22,23岁的,并列出StudentName和StudentAdress,Age 三项
select StudentName, StudentAdress from Students
where StudentAdress in ('Eric','Tom','Jack')
--在Students数据库中查询StudentName是Eric,Tom,Jack,并列出StudentName和StudentAdress两项
4、全文搜索
SQL Server提供了全文检索功能,可以使用CONTAINS函数进行模糊查询。
搜索邮件正文中包含“find me”文本的邮件:
SELECT * FROM Email WHERE CONTAINS(Body, 'find me')
5、使用存储过程
可以使用存储过程实现模糊查询,并通过参数传递查询条件。
创建一个存储过程SP_FuzzySearch,根据输入的姓名(@Name)进行模糊查询:
CREATE PROCEDURE dbo.SP_FuzzySearch (@Name VARCHAR(50))
AS
BEGIN
SELECT *
FROM Customer
WHERE Lastname LIKE '%' + @Name + '%'
END
然后执行存储过程:
EXECUTE dbo.SP_FuzzySearch 'Smith'
二、SQL的模糊查询通配符
1、%
表示任意0个或多个字符。一般在匹配字符串的前后都会加上%。举例:匹配含有 “数据” 的字符串,可以用,WHERE FieldName LIKE ‘%数据%’。如果是匹配首(尾)含某个字符串的值,则用 数据%(%数据)。
2、_
表示 单个 任意字符。当我们需要限制匹配的字符串的长度时,可以用 _ 替代。举例:当需要匹配“北”开头的两个字符的对象时,可以用“北_”。
3、[]
罗列待匹配的单个字符。当知道要匹配的对象的范围时,我们可以用 [] 罗列这些字符。举例:当语句写为:'[冬西南]瓜’,匹配的是 “冬瓜”,“西瓜”,“南瓜”字符串。'[0-4]’ 匹配的是 0,1,2,3,4。'[a-d]’ 匹配的是 a,b,c,d。对于通配符的匹配,需要在外层用 [] 括起来。
4、[^ ] 或者 [! ]
不含所罗列字符的单个字符(两种写法)。与第3点相反,用哪种匹配方式取决于匹配的集合哪个更小。如果匹配字符的集合小,就用 [],如果匹配的集合大,远大于不包含集合,则用 [^ ]。举例:语句 [^冬西南]瓜,匹配的是:甜瓜、香瓜、坏瓜、傻瓜…… 这类不含 [冬西南] 的字符。
三、sql语言的特点
1、SQL风格统一
SQL可以独立完成数据库生命周期中的全部活动,包括定义关系模式、录入数据、建立数据库、查询、更新、维护、数据库重构、数据库安全性控制等一系列操作,这就为数据库应用系统开发提供了良好的环境,在数据库投入运行后,还可根据需要随时逐步修改模式,且不影响数据库的运行,从而使系统具有良好的可扩充性。
2、高度非过程化
非关系数据模型的数据操纵语言是面向过程的语言,用其完成用户请求时,必须指定存取路径。而用SQL进行数据操作,用户只需提出“做什么”,而不必指明“怎么做”,因此用户无须了解存取路径,存取路径的选择以及SQL语句的操作过程由系统自动完成。这不但大大减轻了用户负担,而且有利于提高数据独立性。
3、面向集合的操作方式
SQL采用集合操作方式,不仅查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。
4、以同一种语法结构提供两种使用方式
SQL既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互的使用方式,用户可以在终端键盘上直接输入SQL命令对数据库进行操作。作为嵌入式语言,SQL语句能够嵌入到高级语言(如C、C#、JAVA)程序中,供程序员设计程序时使用。而在两种不同的使用方式下,SQL的语法结构基本上是一致的。这种以统一的语法结构提供两种不同的操作方式,为用户提供了极大的灵活性与方便性。
5、语言简洁,易学易用
SQL功能极强,但由于设计巧妙,语言十分简洁,完成数据定义、数据操纵、数据控制的核心功能只用了9个动词:CREATE、ALTER、DROP、SELECT、INSERT、UPDATE、DELETE、GRANT、REVOKE。且SQL语言语法简单,接近英语口语,因此容易学习,也容易使用。
延伸阅读1:结构化查询语言
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。