mysql必知必會--用通配符進行過濾

来源:https://www.cnblogs.com/ygjzs/archive/2020/01/21/12222328.html
-Advertisement-
Play Games

LIKE 操作符 前面介紹的所有操作符都是針對已知值進行過濾的。不管是匹配一 個還是多個值,測試大於還是小於已知值,或者檢查某個範圍的值,共 同點是過濾中使用的值都是已知的。但是,這種過濾方法並不是任何時 候都好用。例如,怎樣搜索產品名中包含文本anvil的所有產品?用簡單 的比較操作符肯定不行,必 ...


LIKE 操作符

前面介紹的所有操作符都是針對已知值進行過濾的。不管是匹配一
個還是多個值,測試大於還是小於已知值,或者檢查某個範圍的值,共
同點是過濾中使用的值都是已知的。但是,這種過濾方法並不是任何時
候都好用。例如,怎樣搜索產品名中包含文本anvil的所有產品?用簡單
的比較操作符肯定不行,必須使用通配符。利用通配符可創建比較特定
數據的搜索模式。在這個例子中,如果你想找出名稱包含anvil的所有產
品,可構造一個通配符搜索模式,找出產品名中任何位置出現anvil的產
品。

通配符(wildcard) 用來匹配值的一部分的特殊字元。
搜索模式(search pattern)由字面值、通配符或兩者組合構
成的搜索條件。
通配符本身實際是SQL的 WHERE 子句中有特殊含義的字元,SQL支持幾
種通配符。為在搜索子句中使用通配符,必須使用 LIKE 操作符。 LIKE
指示MySQL,後跟的搜索模式利用通配符匹配而不是直接相等匹配進行比較。

謂詞 操作符何時不是操作符?答案是在它作為謂詞(predi-
cate)時。從技術上說, LIKE 是謂詞而不是操作符。雖然最終
的結果是相同的,但應該對此術語有所瞭解,以免在SQL文檔
中遇到此術語時不知道

百分號( % )通配符

最常使用的通配符是百分號( % )。在搜索串中, % 表示任何字元出現
任意次數。例如,為了找出所有以詞 jet 起頭的產品,可使用以下 SELECT
語句:

此例子使用了搜索模式 'jet%' 。在執行這條子句時,將檢索任
意以 jet 起頭的詞。 % 告訴MySQL接受 jet 之後的任意字元,不
管它有多少字元
區分大小寫 根據MySQL的配置方式,搜索可以是區分大小
寫的。如果區分大小寫, 'jet%' 與 JetPack 1000 將不匹配

通配符可在搜索模式中任意位置使用,並且可以使用多個通配符。
下麵的例子使用兩個通配符,它們位於模式的兩端

搜索模式 '%anvil%' 表示匹配任何位置包含文本anvil的值,而
不論它之前或之後出現什麼字元。
通配符也可以出現在搜索模式的中間,雖然這樣做不太有用。下麵
的例子找出以 s 起頭以 e 結尾的所有產品:

註意尾空格 尾空格可能會幹擾通配符匹配。例如,在保存詞
anvil 時,如果它 後面有一個或多個空格,則子句 WHERE
prod_name LIKE '%anvil' 將不會匹配它們,因為在最後的 l
後有多餘的字元。解決這個問題的一個簡單的辦法是在搜索模
式最後附加一個 % 。一個更好的辦法是使用函數(第11章將會
介紹)去掉首尾空格
註意NULL 雖然似乎 % 通配符可以匹配任何東西,但有一個例
外,即 NULL 。即使是 WHERE prod_name LIKE '%' 也不能匹配
用值 NULL 作為產品名的行

下劃線( _ )通配符

另一個有用的通配符是下劃線( _ )。下劃線的用途與 % 一樣,但下劃
線只匹配單個字元而不是多個字元


此 WHERE 子句中的搜索模式給出了後面跟有文本的兩個通配
符。結果只顯示匹配搜索模式的行:第一行中下劃線匹配 1 ,
第二行中匹配 2 。 .5 ton anvil 產品沒有匹配,因為搜索模式要求匹配兩
個通配符而不是一個。對照一下,下麵的 SELECT 語句使用 % 通配符,返回
三行產品:

與 % 能匹配0個字元不一樣,_總是匹配一個字元,不能多也不能少

使用通配符的技巧

正如所見,MySQL的通配符很有用。但這種功能是有代價的:通配
符搜索的處理一般要比前面討論的其他搜索所花時間更長。這裡給出一
些使用通配符要記住的技巧。

  • 不要過度使用通配符。如果其他操作符能達到相同的目的,應該
    使用其他操作符。
  • 在確實需要使用通配符時,除非絕對有必要,否則不要把它們用
    在搜索模式的開始處。把通配符置於搜索模式的開始處,搜索起
    來是最慢的。
  • 仔細註意通配符的位置。如果放錯地方,可能不會返回想要的數
    據。
    總之,通配符是一種極重要和有用的搜索工具,以後我們經常會用
    到它。

本章介紹了什麼是通配符以及如何在 WHERE 子句中使用SQL通配符,
並且還說明瞭通配符應該細心使用,不要過度使用。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 話不多說,先看運行效果: >./term input flag 0x00000500 BRKINT not in ICRNL IGNBRK not in IGNCR not in IGNPAR not in IMAXBEL not in INLCR not in INPCK not in ISTRI ...
  • 據報道三星已經成功研發出有望替代嵌入式快閃記憶體存儲器(eFlash)的嵌入式磁阻隨機訪問記憶體(eMRAM),容量為1Gb,測試晶元的優良率已達90%。 隨著5G物聯網時代的來臨,存儲器領域發展快速,而在這一領域,韓系廠商擁有著比較明顯的優勢。 MRAM晶元是一種以電阻為存儲方式結合非易失性及隨機訪問兩種 ...
  • 思路:一臺Server 2016用作AD+DNS,一臺Server 2016用作Exchange Server 2016 Exchange Server 2016 CU14 安裝路徑:安裝路徑:https://www.microsoft.com/en-us/download/details.aspx ...
  • WEB管理工具 WebVirtMgr WebVirtMgr是一個基於libvirt的Web界面,用於管理虛擬機。它允許您創建和配置新域,並調整域的資源分配。VNC查看器為來賓域提供完整的圖形控制台。KVM是目前唯一支持的虛擬機管理程式。 基礎環境 hosts免密登錄 kvm所用的所有伺服器都需要互相 ...
  • JDK 的安裝系統安裝就不做過多介紹,大家從網上尋找安裝步驟進行安裝,不過我推薦大家進行安裝時選擇桌面圖形化格式進行安裝,方便做一部分操作,同時在安裝過程中選擇英文模式,同時我自己在安裝的過程中發現使用Oracle VM VirtualBox這個虛擬機工具比使用VM工具開發更加方便些 使用工具 系統 ...
  • 造成這種情況的原因有很多,如果直接百度錯誤信息的話,不一定能很快解決問題,所以,出現這種情況,我們可以使用 mysqld console 命令來查看報錯信息,然後根據報錯信息來百度,這樣就很快定位到問題所在。看到以下截圖,我的問題是 Please make sure that directory e ...
  • 推薦閱讀: 論主數據的重要性(正確理解元數據、數據元) CDC+ETL實現數據集成方案 Java實現impala操作kudu 實戰kudu集成impala impala基本介紹 impala是cloudera提供的一款高效率的sql查詢工具,提供實時的查詢效果,官方測試性能比hive快10到100倍 ...
  • 正則表達式介紹 前兩章中的過濾例子允許用匹配、比較和通配操作符尋找數據。對 於基本的過濾(或者甚至是某些不那麼基本的過濾),這樣就足夠了。但 隨著過濾條件的複雜性的增加, WHERE 子句本身的複雜性也有必要增加。 這也就是正則表達式變得有用的地方。正則表達式是用來匹配文本 的特殊的串(字元集合)。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...