admin管理员组

文章数量:829177

【SQL Server】模糊查询

前言


    在实际应用中,如果需要从数据库中检索数据,但又不能给出准确的字符串查询条件时,就可以使用like运算符和通配符来实现模糊查询。在like运算符前面可以使用not运算符,表示对结果取反。


基本内容 


    在这里涉及到一个like运算符和匹配字符串,它们的结合就构成了我们的模糊查询语句。


    基本格式:列名 like 匹配串 ,符匹配串中可以包含普通字符,也可以包含通配符。


    通配符:可以表示任意的字符或字符串,下面请看四种通配符所代表的含义。


    1._(下划线):匹配任意一个字符。


    2.%(百分号):匹配零个或多个字符。


    3.[](大括号):匹配[]中任意一个字符。如[acdg]表示匹配a、c、d、g中的任何一个。若要比较的字符是连续的,则可以用连字符“-”表示。例如,若要匹配b、c、d、e中的任何一个字符,则可以表示为:[b-e],b字母至e字母中间的任意一个。


    4.[^]:不匹配[]中的任意一个字符。如[^acdg]表示不匹配a、c、d、g。同样,要比较的字符是连续的,也可以用连字符“-”表示。


实例应用


            查询姓张的学生的详细信息:

        Select * from student where Sname like '张%'


    查询不姓张的学生的详细信息:

        Select * from student where Sname not like '张%'


    查询姓张、李、刘的学生的详细信息:

        Select * from student whereSname like '[张李刘]'


    查询名字的第二个字为“大”或“小”的学生的姓名和学号:

        Select sname,sno from student where Sno like '_[小大]'


    查询student表中学号的最后一位不是2,3,5的学生的详细信息:

        Select * from student where Sno like '%[^235]'


特别提示


          如果要查找的字符串中正好含有通配符,比如下划线或百分号,就需要使用ESCAPE子句来标识。


    格式:ESCAPE 转义字符


    其中,转义字符是任何一个有效的字符,在匹配串中也包含这个字符,表明位于该字符后面的那个字符将被视为普通字符,而不是通配符。


    例如,在fild字段中查找包含字符串30%的记录,可在where子句中指定:

    Where field1 Like '%30!%%' ESCAPE '!'


    又如,在field1字段中查找包含下划线(_)的记录,可在Where子句中指定:

    Where field1 like '%!_%'ESCAPE '!'


结语


   数据库的模糊查询可以让你在庞大的数据面前,轻松的找到自己需要的数据,多多积累。

   

本文标签: SQL Server模糊查询