我是靠谱客的博主 爱听歌秋天,最近开发中收集的这篇文章主要介绍sql学习记录5-数据过滤 WHERE/IFNULL(参1,参2)/BETWEEN...AND.../IS NULL/IS NOT NULL,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在这里插入图片描述在这里插入图片描述

1. 数据过滤WHERE

  1. WHERE不能单独使用,指的是必需于增删改查的必需子句连在一起使用,是非必需子句;

  2. 位置: WHERE 子句在FROM之后,ORDER 之前

  3. 文本格式的数值同样需要转换一下在进行比较。

  4. WHERE过滤的是行不影响列的展示。

  5. WHERE 忽略NULL 的处理。

  6. 常规运算符:等于(=);不等于(!=或者<>);大于(>);小于(<);大于等于(>=);小于等于(<=);

  7. 过滤的条件列可以不出现在展示结果中。比如:

SELECT m.* FROM milk_tea AS m WHERE m.sale_price - m.in_price < 5;
  1. 过滤的条件如果是数字型字符串,可以直接使用数字,也可以用引号把数字引住,两种结果是一样的;如果是非数字型字符串,那么必须用英文引号。
SELECT m.* FROM milk_tea AS m WHERE m.prod_id = 2; 
SELECT m.* FROM milk_tea AS m WHERE m.prod_id = '2'; 
SELECT m.* FROM milk_tea AS m WHERE m.prod_name = '奶糖'; 
SELECT m.* FROM milk_tea AS m WHERE m.net_w = '150g'; 
  1. 空值遗漏
    这两种情况展示的结果均不展示空值,会造成空值遗漏。
SELECT m.* FROM milk_tea AS m WHERE m.sale_price != 15; 
SELECT m.* FROM milk_tea AS m WHERE m.sale_price <> 15;

那么,遇到空值NULL怎么处理呢?

比如会出现:
原表中sale_price列有NULL
在这里插入图片描述但是 用sale_price=15和sale_price!=15两个结果都不显示NULL行数据。
在这里插入图片描述
在这里插入图片描述
此时用IFNULL(参数1,参数2),比如参数1是某个列名,那么如果参数1代表的列值为空时,用参数2代替空值。参数1可以是列值运算。

(1) WHERE IFNULL(m.sale_price,0) = 15
意思是比较sale_price列值与15的大小,如果sale_price列值为NULL,那么用0代替列值,再用0与15进行比较,即此时NULL的那行数据不会显示出来。
(2) WHERE IFNULL(m.sale_price,0) != 15
此时NULL的那行数据会显示出来

SELECT m.* FROM milk_tea AS m WHERE IFNULL(m.sale_price,0) = 15; 
SELECT m.* FROM milk_tea AS m WHERE IFNULL(m.sale_price,0) != 15; 

在这里插入图片描述在这里插入图片描述

IFNULL(expr1,expr2)

(3)IFNULL(参数1,参数2) 参数1可以是运算:

SELECT m.* FROM milk_tea AS m WHERE IFNULL(m.sale_price * 0.9,0) < 10; 
SELECT m.* FROM milk_tea AS m WHERE IFNULL(m.sale_price * 0.9,0) >= 10; 

在这里插入图片描述在这里插入图片描述(4)区分
WHERE IFNULL(m.sale_price ,10) * 0.9 > 11

WHERE IFNULL(m.sale_price*0.9 ,10) > 11

这两者的结果影响NULL的参与比较的替代值。

第一个NULL先用10代替,然后10 * 0.9得到9,用9与11进行比较;第二个是先NULL*0.9 得到的结果仍然是NULL,然后用10代替,最后用10与11进行比较。

2. 数据过滤 BETWEEN…AND…/IS/IS NOT

  1. 指定数值再某两个值之间:
    (1)WHERE [列] BETWEEN [前端值] AND [后端值]
    (2)适合场景:简化取值范围的书写;两端均包含

WHERE [列名] BETWEEN 30 AND 50
指的是 >=30且<=50

SELECT m.* FROM milk_tea AS m WHERE m.in_price  BETWEEN 5 AND 10;

在这里插入图片描述

  1. 空值过滤—IS NULL
    (1)判断列为空值:WHERE [列] IS NULL
    (2)适合场景:异常值处理

  2. 非空值过滤 IS NOT NULL
    (1)判断列不为空值:WHERE [列] IS NOT NULL;
    (2)适合场景:异常值处理

SELECT m.* FROM milk_tea AS m WHERE m.sale_price IS NULL;
SELECT m.* FROM milk_tea AS m WHERE m.sale_price IS  NOT NULL;
SELECT m.* FROM milk_tea AS m WHERE IFNULL( m.sale_price, 10) = 10 ;

第一、三行结果一样
在这里插入图片描述在这里插入图片描述在这里插入图片描述

最后

以上就是爱听歌秋天为你收集整理的sql学习记录5-数据过滤 WHERE/IFNULL(参1,参2)/BETWEEN...AND.../IS NULL/IS NOT NULL的全部内容,希望文章能够帮你解决sql学习记录5-数据过滤 WHERE/IFNULL(参1,参2)/BETWEEN...AND.../IS NULL/IS NOT NULL所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部