比较运算符是 SQL 查询中最常用的运算符类型,用于比较两个值并返回布尔结果(1=TRUE,0=FALSE,NULL=未知)。以下是 MySQL 中各种比较运算符的详细说明和实际应用。

 

一、基本比较运算符

1. 等于运算符(=)

功能:比较两值是否相等

NULL处理:任何与NULL的比较都返回NULL

类型转换:自动进行类型转换(字符串转数字等)

SELECT 1=0, '2'=2, 2=2, '0.02'=0, 'b'='b', (1+3)=(2+2), NULL=NULL;


1=0'2'=22=2'0.02'=0'b'='b'(1+3)=(2+2)NULL=NULL
011011NULL


2. 安全等于运算符(<=>)

特点:可以安全比较NULL值

NULL处理:NULL<=>NULL返回1

 

SELECT 1<=>0, '2'<=>2, NULL<=>NULL;


1<=>0'2'<=>2NULL<=>NULL
011
 

3. 不等于运算符(<>或!=)

SELECT 'good'<>'god', 1<>2, NULL<>NULL;


'good'<>'god'1<>2NULL<>NULL
11NULL


二、数值比较运算符

1. 小于(<)

SELECT 1<2, 4<4, 5.5<5, NULL<NULL;


1<24<45.5<5NULL<NULL
100NULL


2. 小于等于(<=)

SELECT 1<=2, 4<=4, 5.5<=5;


1<=24<=45.5<=5
110


3. 大于(>)

SELECT 1>2, 4>4, 5.5>5;


1>24>45.5>5
001


4. 大于等于(>=)

SELECT 1>=2, 4>=4, 5.5>=5;


 

1>=24>=45.5>=5
011


三、特殊比较运算符

1. IS NULL / ISNULL()

SELECT NULL IS NULL, ISNULL(NULL), ISNULL(10);


 

NULL IS NULLISNULL(NULL)ISNULL(10)
110


2. IS NOT NULL

SELECT 10 IS NOT NULL, NULL IS NOT NULL;


10 IS NOT NULLNULL IS NOT NULL
10


3. BETWEEN AND

SELECT 4 BETWEEN 2 AND 5, 12 BETWEEN 9 AND 10;


4 BETWEEN 2 AND 512 BETWEEN 9 AND 10
10


四、字符串比较特点

1. 不区分大小写(默认情况下):

   SELECT 'a'='A';  -- 
返回1


2. 字典序比较:

   SELECT 'apple' < 'banana';  -- 
返回1


3. 使用BINARY关键字区分大小写:

  SELECT BINARY 'a'='A';  -- 
返回0


五、实际应用示例

1. 用户年龄筛选:

SELECT * FROM users 
WHERE age BETWEEN 18 AND 30;

2. 产品价格查询:

SELECT * FROM products 
WHERE price > 100 AND discount_price IS NOT NULL;

3. 订单状态检查:

SELECT * FROM orders 
WHERE status = 'shipped' AND ship_date <= CURDATE();

六、注意事项

1. NULL处理:大多数比较运算符遇到NULL会返回NULL

2. 类型转换:比较前MySQL会尝试类型转换

3. 性能考虑:避免在索引列上使用函数或类型转换

4. 字符集影响:不同字符集的字符串比较可能产生不同结果

点赞(1)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)