首页 数据库 mysql

MySQL查询3_WHERE语句

介绍一下where语句里面另外三个关键词的使用方法↓

  • IS NULL关键字的查询条件
  • IN关键字的查询条件
  • 带LIKE关键字的查询条件

【IS NULL】

在MySQL中,不能使用 =NULL 或 != NULL 在列中查找空值 。

在MySQL中,NULL值与任何其它值的比较永远返回NULL,即NULL = NULL返回NULL 。

MySQL中处理NULL使用IS NULL和IS NOT NULL运算符↓

  • IS NULL: 当列的值是NULL,此运算符返回true。
  • IS NOT NULL: 当列的值不为NULL, 运算符返回true

用上面这张test表格演示一下,里面class字段有两个空值(红色框),和四个字符串写的NULL,下面看看效果。

1.查找class字段为空的数据,SQL语句和结果如下,可以看到只把两个真的为空值的记录查询出来了↓

SELECT
  * 
FROM
  test 
WHERE
  class IS NULL


2.查询不为空的SQL语句,结果正好和上面相反↓

SELECT
  * 
FROM
  test 
WHERE
  class IS NOT NULL


3.查询包含"NULL"的数据,SQL如下↓

SELECT
  * 
FROM
  test 
WHERE
  class = "NULL"

标红加粗:注意看结果,没有区分大小写,如果没注意这个问题,实际工作中可能会出大问题。那么要精准查询该怎么办呢?


4.精准查询包含"NULL"的数据,在条件前面加一个BINARY关键词,SQL如下↓

SELECT
  * 
FROM
  test 
WHERE
  BINARY class = "NULL"

说明:对于CHAR、VARCHAR和TEXT类型,BINARY属性可以为列分配该列字符集的校对规则。BINARY属性是指定列字符集的二元校对规则的简写。排序和比较基于数值字符值。因此也就自然区分了大小写。

【IN】

MySQL中的IN运算符用来判断表达式的值是否位于给出的列表中;如果是,返回值为TRUE,否则返回值为FALSE。

NOT IN的作用和IN恰好相反,NOT IN用来判断表达式的值是否不存在于给出的列表中;如果不是,返回值为TRUE,否则返回值为FALSE。

IN和 NOT IN的语法格式如下↓

expr IN ( value1, value2, value3 ... valueN )
expr NOT IN ( value1, value2, value3 ... valueN )


查询包含(四川、湖南、江西)的数据,SQL语句如下↓

SELECT
  * 
FROM
  province 
WHERE
  省份 IN ("四川","湖南","江西")


【LIKE】

在MySQL中,LIKE关键字主要用于搜索匹配字段中的指定内容。其语法格式如下:

[NOT] LIKE  '字符串'
  • NOT :可选参数,字段中的内容与指定的字符串不匹配时满足条件;
  • 字符串:指定用来匹配的字符串。"字符串"可以是一个很完整的字符串,也可以包含通配符。


LIKE关键字支持百分号"%"和下划线"_"通配符

  • "%"是 MySQL中最常用的通配符,它能代表任何长度的字符串;
  • "_"只能代表单个字符。


查询以"北"开头的省份,SQL语句如下↓

SELECT
  * 
FROM
  province 
WHERE
  省份 LIKE "北%"


查询以"北"结束的省份,SQL语句如下↓

SELECT
  * 
FROM
  province 
WHERE
  省份 LIKE "%北"


查询包含"北"的省份,SQL语句如下↓

SELECT
  * 
FROM
  province 
WHERE
  省份 LIKE "%北%"




相关推荐