官术网_书友最值得收藏!

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'”。

主站蜘蛛池模板: 遂川县| 永仁县| 仲巴县| 深圳市| 班玛县| 手游| 海城市| 饶平县| 宜昌市| 南丹县| 泸定县| 正安县| 宜宾县| 定边县| 香港 | 德格县| 溧阳市| 阳江市| 凌海市| 紫阳县| 隆回县| 太谷县| 田阳县| 长治县| 合阳县| 普宁市| 桦川县| 阿勒泰市| 保山市| 宁化县| 富川| 井冈山市| 运城市| 油尖旺区| 福建省| 贺兰县| 永修县| 中阳县| 定南县| 宜章县| 多伦县|