zoukankan      html  css  js  c++  java
  • SQ--模糊查询

    • Between..And

    --between...and...在数据库内部是做作特殊优化的,执行效率比> and<等这种方式快;
    --between a and b 相当于:字段>=a and字段<=b

    例如:

    SELECT * FROM dbo.MyStudent WHERE S_Age BETWEEN 20 AND 30

    SELECT * FROM dbo.MyStudent WHERE S_Age>=20 AND S_Age<=30

    Between ..and还可以做分页。

    比如,我现在设置每一页显示3条数据

    传统的做法:

    第一页:

    SELECT TOP 3 * FROM dbo.MyStudent

    第二页:

    SELECT *FROM dbo.MyStudent WHERE S_ID BETWEEN 4 AND 6

    ...

    总结分页:

    SELECT * FROM dbo.MyStudent WHERE S_ID BETWEEN (当前页-1)*页容量+1  AND 当前页*页容量

    • IN关键字

    判断一个列的值,是否在括号内:

    SELECT * FROM dbo.MyStudent WHERE S_Gender IN ('女')--正确
    SELECT * FROM dbo.MyStudent WHERE S_Gender IN(1) --错误,数据类型不同【在将 varchar 值 '男' 转换成数据类型 int 时失败。

    • 模糊查询

    使用系统已经定义好的通配符,按照定义的规则匹配数据,如果能匹配就查出来:

    通配符,匹配符:_(下划线),%(百分号),[](中括号),^(尖括号)

    _代表一个任意字符;

    %代表零个或多个任意字符;

    []中括号代表一个字符的取值区间;

    ^配和[]使用,表示不是这个区间。注意,^z字符是数据库不兼容的,SQL Server可以用,其他数据库用not like

    --查找姓“张”的学生信息
    SELECT * FROM dbo.MyStudent WHERE S_Name LIKE '张%'


    --查找名字中包含字母‘o’的学生信息
    SELECT * FROM dbo.MyStudent WHERE S_Name LIKE '%o%'


    --查找名字的第二位是字母'i'的学生信息
    SELECT * FROM dbo.MyStudent WHERE S_Name LIKE '_i%'


    --取值区间,用的很少。。
    --查询中间任何位置有字母的学生信息
    SELECT * FROM dbo.MyStudent WHERE S_Name LIKE '%[a-z]%'

    --取值区间,用的很少。。

    --查询中间任何位置有数字的学生信息
    SELECT * FROM dbo.MyStudent WHERE S_Name LIKE '%[0-9]%'

    --查找名字中有字母或数字的学生信息
    SELECT * FROM dbo.MyStudent WHERE S_Name LIKE '%[0-9,a-z]%'

    --SELECT * FROM dbo.MyStudent WHERE S_Name LIKE '张四'
    --表中有名字为张四的学生,现在判断,_(下划线)是否可以匹配零个字符。如果可以的话,下面的这句SQL可以检索到数据
    SELECT * FROM dbo.MyStudent WHERE S_Name LIKE '张四_'

    事实证明:_下滑线不能匹配零个字符,也就是说,下划线代表后面必须有一个字符!!!

    --查询最后一位不是数字的学生信息
    SELECT * FROM dbo.MyStudent WHERE S_Name LIKE '%[^0-9]%'

  • 相关阅读:
    web api 设置允许跨域,并设置预检请求时间
    T4模板
    DDD模式
    Vue watch用法
    第三章--第五节:集合
    简单的Python API爬虫与数据分析教程--目录
    第三章--第四节:字典
    第三章--第三节(补充):列表排序
    汇总张小龙在知乎上的问答
    第三章--第三节:列表
  • 原文地址:https://www.cnblogs.com/caofangsheng/p/5087426.html
Copyright © 2011-2022 走看看