每天一点数据库之-----Day 5 过滤查询

每天一点数据库之-----Day 5 过滤查询

                                                                    ----转载请注明出处:coder-pig



本节引言:

上一节我们学习了基本的数据检索,这节我们来学习高级一点的

过滤查询~



1.单字符过滤:

就是使用"_"这个下划线替代一个字符,比如,我们想检索出:

door,book,cool,took这类字符串的话,我们可以使用"_oo_"

比如我们使用下述SQL语句:


SELECT * FROM T_Worker WHERE FName LIKE '_a_y'


运行后:


如果你的DBMS支持中文的话


SELECT * FROM T_Worker WHERE FDName LIKE '__  '


运行后:





2.多字符过滤:

当然有的时候,字符的个数可能是不定的,比如:

①我们查询表中姓名是以字符"J"开头的字符串

这个时候就要用到"%"这个通配符

SQL语句如下:


SELECT * FROM T_Worker WHERE FName LIKE 'J%'


运行结果如下:



②当然,你可以同时用多个%,比如我们使用下面的SQL语句:


SELECT * FROM T_Worker WHERE FName LIKE '%a%y'


运行结果如下:




你也可以搭配着单字符的"_"那个使用

比如:取出表中名字含有'a'且是倒数第二个字母的记录:


SELECT * FROM T_Worker WHERE FName LIKE '%a_'


运行结果:



另外,还有一个用法,例子:

不是以J开头的记录:


SELECT * FROM T_Worker WHERE NOT ( FName LIKE 'J%' )




3.空值检测:

有时可能需要我们对表中的空值进行检测,比如检测工人表中工资为空的人员的信息:

如果直接WHERE FSalary = null是不行的,必须得使用"IS NULL"这个关键字

如下面的SQL语句:


SELECT * FROM T_Worker WHERE FSalary IS NULL


运行后:


当然你也可以判断不为空,改成IS NOT NULL就可以了!




4.反义运算符

就是不等于,不小于,不大于,某些DBMS是可以直接使用"!"符号,又或者

<>表示等于,<=不大于,>=不小于

当然,为了适应不同的数据库,我们可以变通下使用NOT运算符,使用下述SQL来完成:

比如以下这条SQL语句:

SELECT * FROM T_Worker
WHERE NOT( FAge = 22) AND NOT ( FSalary < 3000 )


运行结果:

分析:这个SQL语句很简单,就是筛选年龄不为22,以及工资不小于3000元的员工信息~




5.多个值的筛选

从上面我们知道可以通过运算符OR,NOT,AND来筛选多个值,

假如有多个值,比如我们需要查询表中年龄为:18,20,22,24,26的员工的信息

我们可以写多个OR来完成,但假如,不止五个值呢?10个或者更多,这个时候

不但写起来麻烦,维护起来也难,而且一不小心就可能引起数据错误!对于这种情况

SQL为我们提供了IN语句

上面查询年龄的SQL可以这样写:


SELECT * FROM T_Worker
WHERE FAge IN(18 , 20, 22 ,24 , 26)


运行SQL:





6.范围值的筛选

上面这种情况适合于特定值筛选的部分,假如是一个范围值呢?比如我要筛选

18-25,30-50的员工呢?当然,可以直接用上面的IN关键字,不过写起来有点麻烦

假如我们筛选的是工资呢?有小数,你怎么玩,这个时候就要用到SQL为我们提供的

另一个语句:BETWEEN AND语句了!

上述这个问题的SQL语句如下:


SELECT * FROM T_Worker
WHERE (FAge   BETWEEN 18 AND 20)
OR ( FAge  BETWEEN 30 AND 50 )


运行SQL:


另外,从查询结果我们也知道了BETWEEN AND查询范围是包括边界值的

比如上面的18!






关于本节内容,到此结束~谢谢吐舌头





  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Django ORM 中,可以使用一些特殊的查询条件来过滤日期和时间类型的数据。下面是一些常用的查询条件: 1. `date`:筛选出指定日期的数据。 示例代码: ``` from datetime import date from myapp.models import MyModel MyModel.objects.filter(date_field=date.today()) ``` 2. `time`:筛选出指定时间的数据。 示例代码: ``` from datetime import time from myapp.models import MyModel MyModel.objects.filter(time_field=time(hour=9, minute=0)) ``` 3. `year`:筛选出指定年份的数据。 示例代码: ``` from myapp.models import MyModel MyModel.objects.filter(date_field__year=2021) ``` 4. `month`:筛选出指定月份的数据。 示例代码: ``` from myapp.models import MyModel MyModel.objects.filter(date_field__month=9) ``` 5. `day`:筛选出指定日期的数据。 示例代码: ``` from myapp.models import MyModel MyModel.objects.filter(date_field__day=15) ``` 6. `week_day`:筛选出指定星期几的数据,星期一为1,星期天为7。 示例代码: ``` from myapp.models import MyModel MyModel.objects.filter(date_field__week_day=1) ``` 除了以上的查询条件,还可以使用 `__range` 来筛选一段时间范围内的数据。例如: ``` from datetime import date from myapp.models import MyModel start_date = date(2021, 9, 1) end_date = date(2021, 9, 30) MyModel.objects.filter(date_field__range=(start_date, end_date)) ``` 以上是一些常用的查询条件,更多查询条件可以查阅 Django 官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值