MySQL中比較運算符的具體使用
更新時間:2025年07月17日 11:31:44 作者:羚風雯
本文介紹了SQL中常用的符號類型和非符號類型運算符,符號類型運算符包括等于(=)、安全等于(<=>)、不等于(<>/!=)、大小比較(<,<=,>,>=)等,感興趣的可以了解一下
符號類型運算符
運算符 | 名稱 | 作用 | 示例 |
---|---|---|---|
= | 等于運算符 | 判斷兩個值、字符串或表達式是否相等 | SELECT * FROM users WHERE age = 25 SELECT name FROM products WHERE category = 'Electronics' |
<=> | 安全等于運算符 | 安全地判斷兩個值、字符串或表達式是否相等(兼容NULL值) | SELECT * FROM employees WHERE salary <=> NULL SELECT * FROM orders WHERE coupon_code <=> 'DISCOUNT' |
<> | 不等于運算符 | 判斷兩個值、字符串或表達式是否不相等 | SELECT * FROM students WHERE gender <> 'F' SELECT id FROM logs WHERE status <> 200 |
!= | 不等于運算符 | 判斷兩個值、字符串或表達式是否不相等 | SELECT * FROM inventory WHERE quantity != 0 SELECT email FROM users WHERE deleted_at != NULL |
< | 小于運算符 | 判斷前面的值是否小于后面的值 | SELECT * FROM products WHERE price < 100 SELECT * FROM events WHERE start_time < '2023-01-01' |
<= | 小于等于運算符 | 判斷前面的值是否小于等于后面的值 | SELECT * FROM members WHERE age <= 18 SELECT * FROM tasks WHERE priority <= 3 |
> | 大于運算符 | 判斷前面的值是否大于后面的值 | SELECT * FROM employees WHERE salary > 5000 SELECT * FROM articles WHERE views > 1000 |
>= | 大于等于運算符 | 判斷前面的值是否大于等于后面的值 | SELECT * FROM candidates WHERE score >= 60 SELECT * FROM reservations WHERE guests >= 4 |
1. 等于運算符=
- 作用:判斷兩個值、字符串或表達式是否相等
- 特點:
- 嚴格比較(NULL = NULL 返回NULL)
- 區(qū)分大小寫(取決于數(shù)據(jù)庫配置)
- 示例:
-- 數(shù)值比較 SELECT * FROM employees WHERE salary = 5000; -- 字符串比較 SELECT * FROM products WHERE name = 'Laptop';
2. 安全等于運算符<=>
- 作用:安全地判斷兩個值/字符串/表達式是否相等(含NULL值)
- 特點:
- NULL <=> NULL 返回TRUE
- 其他情況與
=
相同
- 示例:
-- NULL值安全比較 SELECT * FROM customers WHERE phone_number <=> NULL; -- 常規(guī)比較 SELECT * FROM orders WHERE status <=> 'completed';
3. 不等于運算符<>或!=
- 作用:判斷兩個值/字符串/表達式是否不相等
- 特點:
<>
是標準SQL語法!=
是兼容性語法- 兩者功能完全相同
- 示例:
-- 使用<> SELECT * FROM students WHERE grade <> 'F'; -- 使用!= SELECT * FROM inventory WHERE stock_quantity != 0;
4. 小于運算符<
- 作用:判斷前面的值是否小于后面的值
- 數(shù)據(jù)類型支持:
- 數(shù)值:
3 < 5
→ TRUE - 字符串:按字典序比較
- 日期:
'2023-01-01' < '2023-02-01'
→ TRUE
- 數(shù)值:
- 示例:
-- 數(shù)值比較 SELECT * FROM products WHERE price < 1000; -- 日期比較 SELECT * FROM events WHERE start_date < CURRENT_DATE;
5. 小于等于運算符<=
- 作用:判斷前面的值是否小于或等于后面的值
- 邊界情況:
5 <= 5
→ TRUENULL <= 5
→ NULL
- 示例:
-- 年齡篩選 SELECT * FROM users WHERE age <= 18; -- 庫存檢查 SELECT * FROM warehouse WHERE quantity <= reorder_level;
6. 大于運算符>
- 作用:判斷前面的值是否大于后面的值
- 字符串比較規(guī)則:
'Apple' > 'Banana'
→ FALSE(按字符編碼比較)- 大小寫敏感(‘A’ > ‘a’ 結果取決于排序規(guī)則)
- 示例:
-- 薪資查詢 SELECT name FROM employees WHERE salary > 10000; -- 時間范圍 SELECT * FROM logs WHERE timestamp > '2023-06-01 00:00:00';
7. 大于等于運算符>=
- 作用:判斷前面的值是否大于或等于后面的值
- 特殊注意:
- 對NULL值的比較總是返回NULL
- 適用于范圍查詢的閉合區(qū)間
- 示例:
-- 分數(shù)篩選 SELECT student_id FROM exams WHERE score >= 60; -- 日期范圍 SELECT * FROM reservations WHERE end_date >= '2023-12-31';
8.綜合比較表
運算符 | NULL處理 | 適用場景 | 典型用例 |
---|---|---|---|
= | 返回NULL | 精確匹配查詢 | 用戶登錄驗證 |
<=> | 返回TRUE | 需要包含NULL值的比較 | 可選字段檢查 |
<>/!= | 返回NULL | 排除特定值的查詢 | 過濾無效記錄 |
< | 返回NULL | 范圍查詢(開區(qū)間) | 查找歷史數(shù)據(jù) |
<= | 返回NULL | 范圍查詢(閉區(qū)間) | 統(tǒng)計截止某日期的數(shù)據(jù) |
> | 返回NULL | 下限篩選 | 查找高價值客戶 |
>= | 返回NULL | 下限篩選(含邊界) | 達標數(shù)據(jù)篩選 |
非符號類型運算符
運算符 | 名稱 | 作用 | 示例 |
---|---|---|---|
IS NULL | 為空運算符 | 判斷值/字符串/表達式是否為空 | SELECT B FROM table WHERE A IS NULL |
IS NOT NULL | 不為空運算符 | 判斷值/字符串/表達式是否不為空 | SELECT B FROM table WHERE A IS NOT NULL |
LEAST | 最小值運算符 | 在多個值中返回最小值 | SELECT D FROM table WHERE C = LEAST(A,B) |
GREATEST | 最大值運算符 | 在多個值中返回最大值 | SELECT D FROM table WHERE C = GREATEST(A,B) |
BETWEEN | 區(qū)間運算符 | 判斷值是否在兩個值之間 | SELECT D FROM table WHERE C BETWEEN A AND B |
IN | 屬于運算符 | 判斷值是否為列表中的任意一個 | SELECT D FROM table WHERE C IN (A,B) |
NOT IN | 不屬于運算符 | 判斷值是否不在列表中 | SELECT D FROM table WHERE C NOT IN (A,B) |
LIKE | 模糊匹配運算符 | 判斷值是否符合模糊匹配規(guī)則 | SELECT C FROM table WHERE A LIKE B |
REGEXP/RLIKE | 正則表達式運算符 | 判斷值是否符合正則表達式 | SELECT C FROM table WHERE A REGEXP B |
一、空值判斷運算符
1.IS NULL
- 功能:判斷值/字符串/表達式是否為空
- 語法:
WHERE column IS NULL
- 特點:
- 唯一正確的NULL值判斷方式(
= NULL
是錯誤語法) - 適用于所有數(shù)據(jù)類型
- 唯一正確的NULL值判斷方式(
- 示例:
-- 查找未填寫電話號碼的用戶 SELECT * FROM users WHERE phone IS NULL;
2.IS NOT NULL
- 功能:判斷值/字符串/表達式是否不為空
- 語法:
WHERE column IS NOT NULL
- 應用場景:
- 數(shù)據(jù)完整性檢查
- 有效記錄篩選
- 示例:
-- 查找已激活的用戶(email不為空) SELECT * FROM accounts WHERE email IS NOT NULL;
二、極值運算符
3.LEAST
- 功能:返回參數(shù)列表中的最小值
- 特點:
- 支持2個及以上參數(shù)
- 可比較數(shù)值/字符串/日期等類型
- 示例:
-- 獲取最早日期 SELECT LEAST('2023-01-01', '2022-12-31', '2023-05-15');
4.GREATEST
- 功能:返回參數(shù)列表中的最大值
- 典型應用:
- 價格上限控制
- 有效期計算
- 示例:
-- 計算最終價格(不超過建議零售價) SELECT product_id, LEAST(price, msrp) AS final_price FROM products;
三、范圍運算符
5.BETWEEN
- 功能:判斷值是否在指定范圍內(閉區(qū)間)
- 等效寫法:
WHERE x >= a AND x <= b
- 注意事項:
- 總是先寫小值再寫大值
- 日期范圍查詢時包含邊界
- 示例:
-- 查詢2023年Q2訂單 SELECT * FROM orders WHERE order_date BETWEEN '2023-04-01' AND '2023-06-30';
四、集合運算符
6.IN
- 功能:判斷值是否在指定列表中
- 性能建議:
- 列表項超過100時考慮臨時表
- 支持子查詢
- 示例:
-- 查找特定品類商品 SELECT * FROM products WHERE category_id IN (1, 3, 5);
7.NOT IN
- 功能:判斷值是否不在指定列表中
- NULL值陷阱:
- 當列表包含NULL時,所有比較返回NULL
- 建議配合
IS NOT NULL
使用
- 示例:
-- 排除測試賬戶 SELECT * FROM users WHERE user_id NOT IN (999, 1000);
五、模式匹配運算符
8.LIKE
- 通配符:
符號 功能 %
匹配任意數(shù)量字符 _
匹配單個字符 - 大小寫敏感:取決于數(shù)據(jù)庫配置
- 示例:
-- 查找J開頭的姓名 SELECT * FROM employees WHERE name LIKE 'J%';
9.REGEXP/RLIKE
- 功能:正則表達式匹配(兩者完全等效)
- 常用模式:
^
:字符串開始$
:字符串結束[0-9]
:數(shù)字字符
- 示例:
-- 驗證郵箱格式 SELECT * FROM contacts WHERE email REGEXP '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$';
六、特殊說明
10.ISNULL(MySQL特有)
- 注意:與
IS NULL
功能相同,但非SQL標準 - 建議:優(yōu)先使用標準語法
IS NULL
到此這篇關于MySQL中比較運算符的具體使用的文章就介紹到這了,更多相關MySQL 比較運算符內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
如何解決局域網(wǎng)內mysql數(shù)據(jù)庫連接慢
通過內網(wǎng)連另外一臺機器的mysql服務, 確發(fā)現(xiàn)速度N慢! 等了大約幾十秒才等到提示輸入密碼。非常急人,有沒有辦法可以解決局域網(wǎng)內mysql數(shù)據(jù)庫連接慢呢?下面小編帶領大家來解決此問題,感興趣的朋友一起看看吧2015-09-09mysql8.0.11安裝配置方法圖文教程 MySQL8.0新密碼認證方式
這篇文章主要為大家詳細介紹了mysql8.0.11安裝配置方法圖文教程,以及MySQL8.0新密碼認證方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-11-11window環(huán)境下使用VScode連接虛擬機MySQL方法
這篇文章主要介紹了window環(huán)境下使用VScode連接虛擬機MySQL方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-04-04