- MariaDB必知必會
- (美)Ben Forta
- 581字
- 2020-10-30 18:17:44
9.2.1 基本字符匹配
我們從簡單的例子開始。下面的語句檢索列prod_name包含文本1000的所有行:
▼ 輸入

▼ 輸出

▼ 分析
這個語句看起來像我們使用的LIKE語句(見第8章),除了關鍵字LIKE被替換為REGEXP。它告知MariaDB接下來的內容被當作正則表達式處理(僅僅匹配文字文本1000)。
那么,為什么還要這么麻煩地使用正則表達式呢?好吧,像在剛才這個例子中,使用正則表達式確實沒有什么價值(而且可能會影響性能),然而如果考慮下面這個例子:
▼ 輸入

▼ 輸出

▼ 分析
這里使用了正則表達式“.000”。“.”是正則表達式語言中的一個特殊字符。它代表任意一個字符,因此1000和2000都能匹配,并且被返回。
當然,這個特殊的例子也可以用LIKE和通配符實現(如第8章所示)。
注意
LIKE和REGEXP LIKE和REGEXP有一個重要的不同點,看下面的兩個語句:

和

如果你試一試,就會發現第一個語句沒有返回數據,第二個語句返回一行。為什么?
就如第8章所見,LIKE匹配一個完整的列。如果匹配的文本存在于列的值中,LIKE不會找到并且該行不會返回(除非使用通配符)。相反的,REGEXP在列中尋找匹配的值,如果匹配的文本存在于列的值中,REGEXP會找到它并且返回該行。這是一個重要的區別。
那REGEXP可以用來匹配完整的列值嗎(以便完成和LIKE一樣的功能)?實際上,使用^和$錨點是可以的,見本章后面內容。
提示
匹配時不區分大小寫 MariaDB中的正則表達式匹配時不區分大小寫(即兩種情況都可以匹配)。為了強制區分大小寫,你可以使用BINARY關鍵字,如“WHERE prod_name REGEXP BINARY'JetPack.000'”。
推薦閱讀
- Learning Neo4j
- Learning Microsoft Windows Server 2012 Dynamic Access Control
- HBase從入門到實戰
- 假如C語言是我發明的:講給孩子聽的大師編程課
- Raspberry Pi 2 Server Essentials
- Learning Network Forensics
- 可解釋機器學習:模型、方法與實踐
- 零基礎入門學習Python(第2版)
- Python計算機視覺和自然語言處理
- 超簡單:用Python讓Excel飛起來(實戰150例)
- Mastering Concurrency in Python
- Python第三方庫開發應用實戰
- Elasticsearch搜索引擎構建入門與實戰
- 高質量程序設計指南:C++/C語言
- Learning Android Application Development