MySQL 運算符詳解:邏輯、位運算與正則表達式應用

MySQL 運算符詳解:邏輯、位運算與正則表達式應用

在 MySQL 中,運算符是構建復雜查詢條件的基礎。除了基礎的算術和比較運算符,邏輯運算符、位運算符以及正則表達式的靈活運用,能讓數據篩選更加精準高效。本文將系統講解這些運算符的用法、規則及實戰技巧,幫助你掌握復雜查詢的核心技能。

一、邏輯運算符:多條件組合的核心

邏輯運算符用于組合多個條件,判斷表達式的真假,返回結果為1(真)、0(假)或NULL(未知)。常用的有四種:

1. 邏輯非(NOT / !)

作用:對條件結果取反

語法:NOT 條件 或 ! 條件

規則

  • 條件為0(假)時返回1;

  • 條件為非0(真)時返回0;

  • 條件為NULL時返回NULL。

示例

-- 查詢薪資不在9000-12000之間的員工
SELECT employee_id, salary 
FROM employees 
WHERE NOT (salary >= 9000 AND salary <= 12000);

2. 邏輯與(AND / &&)

作用:所有條件同時為真時返回1

語法:條件1 AND 條件2 或 條件1 && 條件2

規則

  • 所有條件非0且非NULL時返回1;

  • 任意條件為0時返回0;

  • 存在NULL且無0時返回NULL。

示例

-- 查詢部門30中薪資>5000的員工
SELECT last_name, salary 
FROM employees 
WHERE department_id = 30 AND salary > 5000;

3. 邏輯或(OR / ||)

作用:任意條件為真時返回1

語法:條件1 OR 條件2 或 條件1 || 條件2

規則

  • 任意條件非0時返回1;

  • 所有條件為0時返回0;

  • 存在NULL且無真條件時返回NULL。

注意:AND優先級高于OR,建議用括號明確邏輯

示例

-- 正確:查詢薪資>10000 或 (崗位含MAN且薪資>5000)的員工
SELECT last_name, job_id, salary 
FROM employees 
WHERE salary > 10000 OR (job_id LIKE '%MAN%' AND salary > 5000);

4. 邏輯異或(XOR)

作用:兩個條件一真一假時返回1(“異” 即不同)

語法:條件1 XOR 條件2

規則

  • 一真一假(非0和0)時返回1;

  • 同真或同假時返回0;

  • 任意條件為NULL時返回NULL。

示例

-- 查詢部門為10/20 或 薪資>8000,但不同時滿足的員工
SELECT last_name, department_id, salary 
FROM employees 
WHERE department_id IN (10, 20) XOR salary > 8000;

二、位運算符:二進制層面的運算

位運算符直接對數值的二進制位進行操作,適用于底層數據處理(如權限控制)。運算時先將數值轉為二進制,計算后再轉回十進制。

運算符名稱作用說明示例(6→110,3→011)
&按位與對應位都為 1 則返回 1,否則 06 & 3 = 2(110 & 011=010)
||按位或對應位有一個為 1 則返回 1,否則 0
^按位異或對應位不同則返回 1,相同則 06 ^ 3 = 5(110 ^ 011=101)
~按位取反0→1,1→0(結果為原數的補碼)~6 = -7(補碼運算)
>>按位右移二進制位右移指定位數,高位補 06 >> 1 = 3(110→11)
<<按位左移二進制位左移指定位數,低位補 06 << 1 = 12(110→1100)

示例

-- 判斷權限位是否包含某角色(假設8對應二進制1000,代表管理員權限)
SELECT user_id, role_bits 
FROM users 
WHERE (role_bits & 8) = 8;  -- 結果為8表示包含管理員權限

三、運算符優先級:避免邏輯混亂

運算符優先級決定計算順序,優先級高的先執行。記不清時,用括號**()**強制指定順序(推薦)。

優先級從高到低(核心)

  1. 括號()(最高)

  2. 位運算符(~、<<、>>、&、^、|)

  3. 算術運算符(*、/、% 高于 +、-)

  4. 比較運算符(=、>、BETWEEN、IN等)

  5. 邏輯運算符(NOT > AND > OR、XOR)

  6. 賦值運算符(=,最低)

示例

-- 錯誤:因AND優先級高,可能不符合預期
SELECT * FROM employees WHERE salary>5000 OR salary<3000 AND department_id=30;-- 正確:用括號明確先算OR的兩邊
SELECT * FROM employees WHERE (salary>5000 OR salary<3000) AND department_id=30;

四、正則表達式:復雜字符串匹配

REGEXP支持靈活的字符串模式匹配,比LIKE更適合復雜場景。常用匹配規則如下:

模式符號作用示例
^匹配開頭‘^b’ 匹配以 b 開頭的字符串
$匹配結尾‘y$’ 匹配以 y 結尾的字符串
.匹配任意單個字符‘a.g’ 匹配 a 和 g 之間有一個任意字符
*匹配前面字符 0 次或多次‘ba*’ 匹配 b 后接 0 個或多個 a(b、ba 等)
+匹配前面字符至少 1 次‘ba+’ 匹配 b 后接 1 個或多個 a(ba、baa)
``匹配多個選項之一
[]匹配括號內任意單個字符‘[ot]’ 匹配 o 或 t
[^]匹配括號外任意字符‘[^0-9]’ 匹配非數字字符
{n,}匹配前面字符至少 n 次‘x{2,}’ 匹配 x 至少出現 2 次
{n,m}匹配前面字符 n 到 m 次‘ba{1,3}’ 匹配 ba、baa、baaa

示例

-- 1. 匹配以b開頭且后面有至少1個a的字符串
SELECT f_name FROM fruits WHERE f_name REGEXP '^ba+';-- 2. 匹配包含on或ap的字符串
SELECT f_name FROM fruits WHERE f_name REGEXP 'on|ap';-- 3. 匹配x連續出現至少2次的字符串
SELECT f_name FROM fruits WHERE f_name REGEXP 'x{2,}';

與 LIKE 的區別

  • REGEXP匹配字符串中任意位置的模式(如’bon’ REGEXP 'on’返回 1);

  • LIKE需用通配符才能匹配中間內容(如’bon’ LIKE '%on%'才返回 1)。

五、總結:核心要點速覽

  1. 邏輯運算符
    • NOT取反,AND需全真,OR需一真,XOR需一真一假;
    • 注意AND優先級高于OR,用括號明確邏輯。
  1. 位運算符
    • 對二進制位操作,適用于權限控制等底層場景;
    • 常用&(判斷位是否為 1)、<</>>(移位運算)。
  1. 優先級
    • 括號最高,賦值最低;不確定時用括號強制順序。
  1. 正則表達式
    • REGEXP支持復雜模式匹配,靈活度遠超LIKE;
    • 掌握^/$/[]/{}等符號,可應對多數字符串篩選需求。

熟練運用這些運算符,能讓你在處理多條件查詢和復雜字符串匹配時更加得心應手,寫出高效、精準的 SQL 語句。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/93517.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/93517.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/93517.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

<數據集>遙感飛機識別數據集<目標檢測>

數據集下載鏈接https://download.csdn.net/download/qq_53332949/91702190數據集格式&#xff1a;VOCYOLO格式 圖片數量&#xff1a;3842張 標注數量(xml文件個數)&#xff1a;3842 標注數量(txt文件個數)&#xff1a;3842 標注類別數&#xff1a;20 標注類別名稱&#xf…

Windows從零到一安裝KingbaseES數據庫及使用ksql工具連接全指南

目錄Windows從零到一安裝KingbaseES數據庫及使用ksql工具連接全指南前言第一部分&#xff1a;安裝前準備1.1 系統要求檢查1.2 下載安裝包1.3 驗證安裝包完整性第二部分&#xff1a;安裝KingbaseES2.1 啟動安裝程序2.2 接受許可協議2.3 選擇授權文件2.4 設置安裝目錄2.5 選擇安裝…

Git+Jenkins 基本使用

一、什么是 JenkinsJenkins 是一個功能強大的應用程序&#xff0c;允許持續集成和持續交付項目&#xff08;持續部署&#xff09;&#xff0c;無論用的是什么平臺。這是一個免費的源代碼&#xff0c;可以處理任何類型的構建或持續集成。集成 Jenkins 可以用于一些測試和部署技術…

Linux第十三講:線程同步和互斥

Linux第十三講&#xff1a;線程同步和互斥1.線程互斥1.1進程線程間的互斥背景概念1.2什么是鎖1.2.1認識鎖&#xff0c;理解鎖2.線程同步2.1條件變量2.2生產和消費模型2.3基于阻塞隊列(blockqueue)的生產消費模型2.3.1單生產&#xff0c;單消費的阻塞隊列模擬實現2.3.2多生產&am…

SAP 簡單的AMDP demo 練習使用

SAP AMDP&#xff08;ABAP Managed Database Procedure&#xff09;是SAP的一項先進技術&#xff0c;用于在SAP HANA數據庫上執行高性能的數據庫操作。它允許ABAP開發人員編寫數據庫過程&#xff0c;這些過程可以在數據庫級別上執行&#xff0c;從而實現更快的數據處理和更高的…

Maven JAR Plugin 插件使用說明

Maven JAR Plugin 插件使用說明1 Maven JAR Plugin 插件地址2 Maven JAR Plugin 特點3 maven-assembly-plugin 的用法3.1 無依賴項 maven-jar-plugin 配置3.2 有依賴項 maven-jar-plugin 配置3.3 配合maven-dependency-plugin 將依賴復制到指定位置1 Maven JAR Plugin 插件地址…

QT+Yolov8 推理部署,ONNX模型 ,實例分割+目標檢測

QTYolov8 實例分割、目標檢測推理。QT源碼。 程序準備/版本:QT creator QT6.8 編譯器:MSVC2022 opencv:4.7 onnxruntime:1.16.0 cpu版本 QTyolo推理部署程序部分源碼: #include "aitoolinterface.h" #include "ui_aitoolinterface.h" #include <QDebu…

【java實現一個接口多個實現類通用策略模式】

java實現同個接口多個實現類通用策略模式 項目業務中&#xff0c;有多個平臺&#xff0c;多個平臺直接有相同的業務&#xff0c;只有一個接口入口&#xff0c;但是 不同的平臺入口&#xff0c;雖然接口相同&#xff0c;參數相同&#xff0c;但是各自的具體實現不同&#xff0c;…

leetcode-139. 單詞拆分-C

暴力回溯回溯過程就是一個決策樹模型&#xff0c;從所有選擇中找到合適的繼續&#xff0c;否則回到上一級繼續。該方法思路簡單&#xff0c;時間復雜度過高&#xff0c;大概1/4的用例超時。 bool backtrack(char *s, int cur, char** wordDict, int wordDictSize) {// 基線條件…

《彩色終端》詩解——ANSI 藝術解碼(DeepSeek)

AIi詩解通吾靈&#xff0c;直抄原文享分玲。 筆記模板由python腳本于2025-08-18 23:35:59創建&#xff0c;本篇筆記適合喜歡詩&代碼的coder翻閱。 學習的細節是歡悅的歷程 博客的核心價值&#xff1a;在于輸出思考與經驗&#xff0c;而不僅僅是知識的簡單復述。 Python官網…

抓包工具tcpdump詳細指南

目錄 1. 核心功能與特性 2. 關鍵參數速查表 3. 基礎命令 3.1 協議/端口過濾 3.2 IP 地址過濾 3.3 高級邏輯組合 3.4 控制輸出詳細度 3.5 解析包內容 3.6 特殊包過濾 3.7 限制抓包數量 3.8 過濾特定大小包 3.9 過濾提升性能 ??????3.10 多網卡綁定 3.11 高級…

三高架構雜談

我們的秒殺請求到了tomcat之后&#xff0c;我整個請求到了后端&#xff0c;我們怎么抗住高并發 也就是讓他1s抗住10w的訂單量&#xff0c;該怎么做 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>…

后端通用基礎代碼

后端通用基礎代碼 通用基礎代碼是指&#xff1a;“無論在任何后端項目中&#xff0c;都可以復用的代碼。這種代碼一般 “一輩子只用寫一次” &#xff0c;了解作用之后復制粘貼即可&#xff0c;無需記憶。 目錄結構如下&#xff1a;1、自定義異常 自定義錯誤碼&#xff0c;對錯…

基于51單片機WIFI心率計脈搏體溫測量儀APP設計

1 系統功能介紹 本設計基于 STC89C52 單片機&#xff0c;結合 脈搏傳感器、溫度傳感器 DS18B20、LCD1602 液晶顯示器、WiFi 模塊 等外設&#xff0c;構建了一個 WiFi 心率計脈搏體溫測量儀 APP 系統。系統能夠實現對人體心率與體溫的實時采集、處理、顯示和遠程上傳&#xff0c…

從零到一構建企業級GraphRAG系統:GraphRag.Net深度技術解析

當RAG遇上知識圖譜&#xff0c;會碰撞出怎樣的火花&#xff1f;本文將帶你深入探索GraphRag.Net這個開源項目&#xff0c;看看如何用.NET技術棧打造一個企業級的圖譜增強檢索系統。 引言&#xff1a;為什么我們需要GraphRAG&#xff1f; 在AI大模型時代&#xff0c;RAG&#x…

前端Element-plus的選擇器 el-select 清空內容時,后端對應的更新方式,支持更新為null

1、所屬小類選擇器 el-select 清空內容時&#xff0c;前端通過事件設置為空字符串clear"handleSmallCategoryClear"【所屬小類選擇器】只能選擇&#xff0c;不能輸入信息<script setup lang"ts" name"QualityFileInfoDialog"> ...... // 所…

【筆記】和各大AI大語言模型合作寫項目—slirp.go

最近和各大AI大語言模型一起合作寫了個小項目&#xff0c;讓大家看看AI離取代人類還差多遠。 開發大家都在一個共享環境下&#xff0c;連docker都不能運行&#xff0c;rootless也沒有。不過好在linux環境&#xff0c;弄個proot能apt或者yum install自由&#xff0c;但是諸如pod…

國標:開展環境衛生滿意度調查

隨著社會的進步和人們生活水平的提高&#xff0c;&#xff08;滿意度調查&#xff09;&#xff08;問卷調查&#xff09;&#xff08;第三方市場咨詢公司&#xff09;對生活品質的追求以及對環境保護的重視已經成為了當下社會的主旋律。在這樣的背景下&#xff0c;環境衛生問題…

【辦公類-54-08】20250902 2025學年第一學期班級點名冊模版(雙休國定假涂成灰色、修改標題和頁眉,批量導出PDF)根據新Excel模版,標題增加園區、空姓名行填充灰色

背景需求: 之前做了優化過的點名冊 【辦公類-54-07】20250901 2025學年第一學期班級點名冊模版(雙休國定假涂成灰色、修改標題和頁眉,批量導出PDF)-CSDN博客文章瀏覽閱讀984次,點贊27次,收藏29次。【辦公類-54-07】20250901 202學年第一學期班級點名冊模版(雙休國定假…

【C++知識雜記1】智能指針及其分類

智能指針&#xff08;smart pointer&#xff09; 是 C11 引入的一類 模板類&#xff0c;用來封裝原始指針&#xff0c;自動管理堆內存的生命周期&#xff0c;避免出現 內存泄漏 和 懸空指針&#xff08;野指針&#xff09; 的問題。 當智能指針對象離開作用域時&#xff0c;它會…