北京白癜风医院 https://jbk.39.net/yiyuanzaixian/bjzkbdfyy/nxbdf/1.概述在企业的.NET信息系统中,匹配查询和模糊查询使用频率是非常高的,像百度搜索使用的就是模糊查询,只要输入任意1个关键字,就可以查询出来所有与该关键字相关的信息。模糊查询例如,查询姓名为李小强的数据,则要使用姓名=李小强进行查询,这是相等查询。什么是模糊查询呢?模糊是指只匹配某一个字符或多个字符,然后中间或两边为任意字符,这就是模糊查询,如查询姓李的学生,则就是模糊查询。与之匹配的有李小强、李大强、李小花、李一鸣等。2.使用模糊查询在SQLServer中,模糊查询要使用like在Where条件中进行查询。在搜索数据库中的数据时,SQL通配符可以替代一个或多个字符。SQL通配符必须与LIKE运算符一起使用,LIKE是关键字。SQL通配符有:%、_、[]和[^]。这3个通配符非常重要,一定要清楚每个通配符的代表的具体含义。2.1.%通配符的使用在SQLServer中,%通配符在SQL语句中表示任意的0或多个字符。基本语法如下:select*from表名where字段名like%值%注意,在此SQL语句中,like关键字后面是带有单引号的匹配模式,其中包含了2个%通配符,表示在“值”左边和右边可以是任意的0个或多个字符。例如:查询出BW_Student表中姓名中包含“一”的所有学生。注意:当提到“包含”这2个字时,就表示模糊查询。如下SQL语句:SELECTTOP[Id],[Name],[Age],[Sex]FROM[BW_TestDB].[dbo].[BW_Student]WHERENameLIKE%一%使用了’%一%’表示在一左边和右边可以有任意的0个或多个字符,都可以与之匹配。运行结果如下:like+%模糊查询在这里使用了:WHERENameLIKE‘%一%’来实现模糊查询,LIKE左边是要进行模糊查询的字段名,右边是使用单引号括起来的模糊查询的表达式。%通配符使用的最多,表示任意的0个或多个字符,边界值限制比较少,因此,广受.NET开发者喜欢。2.2._通配符的使用在SQLServer中,_在SQL语句中表示任意的1个字符。基本语法如下:select*from表名where字段名like_值_例如:查询出BW_Student表中所有年龄为20-29(包含20和29)的学生。如下SQL语句:SELECT*FROMBW_StudentWHEREAgeLIKE2_运行结果如下:like+_模糊查询由于_可以表示任意的单个字符,所以’2_’表示所有以2开头且第2个字符为任意字符的字符串都符合要求。总体是匹配的是2个字符组成的字符串。2.3.[]通配符的使用在SQLServer中,对于[]有两种使用方法:1)[]表示指定范围内。2)[^]表示不在指定的范围内。[]只匹配一个字符,并且这个字符必须是[]范围内的。如:[0-9]表示匹配0-9之间的任意一个数字,[a-z]表示匹配a-z之间的任意字母。例如:查询出年龄为20、21、22、23的学生select*fromBW_StudentwhereAgelike2[0,1,2,3]或select*fromBW_StudentwhereAgelike2[0-3]运行一下结果:[]通配符[^]通配符在图3和图4中,分别使用了[]和[^]通配符来模糊查询Age列的值。运行后将匹配的结果显示出来。2.4.排序函数Row_Number()的使用在SQLServer中,使用Row_Number()函数可以在查询的结果中,为每行数据添加一个行号,这个行号从1开始,常用于序号、排名等。基本语法如下:selectROW_NUMBER()over(orderby字段名desc/asc)别名,字段名1,字段名2,字段名nfrom表名例如:在BW_Student表中对年龄从大到小排列,并给出一个名次。SQL语句如下:SELECTROW_NUMBER()OVER(orderbyAgedesc)名次,*FROMBW_Student运行一下结果:按序号排列在图5中,查询的结果中多了一个“名次”列,该列就是一个名次列,是一个序号,注意,这个序号是临时的,并不真实存在数据库中。在.NET应用程序的后台管理系统中,模糊查询是少不了的,这些通配符也是经常使用的,有的时候还会在C#业务逻辑中处理后,再通过ADO.NET技术发送给用户,这样用户得的结果更精准。