久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

mysql中正則表達式搜索功能的示例分析

154次閱讀
沒有評論

共計 3263 個字符,預計需要花費 9 分鐘才能閱讀完成。

這篇文章主要介紹 mysql 中正則表達式搜索功能的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

具體如下:

我們知道正則表達式是描述搜索模式的特殊字符串。它是一個強大的工具,為我們提供一種簡潔靈活的方法來識別基于模式的文本字符,例如字符,單詞等。例如,我們可以使用正則表達式來搜索電子郵件,IP 地址,電話號碼,社會安全號碼或具有特定模式的任何內容。正則表達式可以由正則表達式處理器解釋的自己的語法,正則表達式廣泛應用于從編程語言到數據庫 (包括 MySQL) 大部分平臺。使用正則表達式的優點是,不限于在 like 運算符中基于具有百分號 (%) 和下劃線 (_) 的固定模式搜索字符串。使用正則表達式,有更多的元字符來構造靈活的模式。

了解了這些我們是不是想要來試試水呢???廢話不多說,MySQL 允許使用 REGEXP 運算符在 SQL 語句中匹配模式,所以,我們來看下,正則再 where 子句中的語法格式:

SELECT 
 column_list
 table_name
WHERE
 string_column REGEXP pattern;

這條 sql 中執行 string_column 與模式 pattern 匹配,如果 string_column 中的值與模式 pattern 匹配,則 WHERE 子句中的表達式將返回 1,否則返回 0。如果 string_column 或 pattern 為 NULL,則結果為 NULL。除了 REGEXP 運算符之外,可以使用 RLIKE 運算符,這是 REGEXP 運算符的同義詞。其中,REGEXP 運算符的否定形式是 NOT REGEXP。

完事我們來看個實例哈,假設想找出名字以字母 A,B 或 C 開頭的產品。可以使用 select 語句中的正則表達式如下:

SELECT 
 productname
 products
WHERE
 productname REGEXP  ^(A|B|C) 
ORDER BY productname;

執行上面查詢語句,得到以下結果:

+--------------------------------+
| productname |
+--------------------------------+
| America West Airlines B757-200 |
| American Airlines: B767-300 |
| American Airlines: MD-11S |
| ATA: B757-300 |
| Boeing X-32A JSF |
| Collectable Wooden Train |
| Corsair F4U ( Bird Cage) |
+--------------------------------+
7 rows in set

該模式允許查詢名稱以 A,B 或 C 開頭的產品,其中字符 ^ 表示從字符串的開頭匹配,完事字符 | 如果無法匹配,則搜索替代方法。下表說明了正則表達式中一些常用的元字符和構造:

元字符行為 ^ 匹配搜索字符串開頭處的位置 $ 匹配搜索字符串末尾的位置. 匹配任何單個字符 […] 匹配方括號內的任何字符 [^…] 匹配方括號內未指定的任何字符匹配 p1 或 p2 模式 * 匹配前面的字符零次或多次 + 匹配前一個字符一次或多次 {n} 匹配前幾個字符的 n 個實例 {m,n} 從 m 到 n 個前一個字符的實例匹配

我們再來查找名稱以 a 開頭的產品,我們在名稱開頭使用“^”進行匹配,如下查詢語句:

SELECT 
 productname
 products
WHERE
 productname REGEXP  ^a

執行上面查詢語句,得到以下結果:

+--------------------------------+
| productname |
+--------------------------------+
| American Airlines: B767-300 |
| America West Airlines B757-200 |
| ATA: B757-300 |
| American Airlines: MD-11S |
+--------------------------------+
4 rows in set

如果要使 REGEXP 運算符以區分大小寫的方式比較字符串,可以使用 BINARY 運算符將字符串轉換為二進制字符串。因為 MySQL 比較二進制字節逐字節而不是逐字符。這允許字符串比較區分大小寫。例如,以下語句只匹配開頭為大寫“C”的產品名稱:

SELECT 
 productname
 products
WHERE
 productname REGEXP BINARY  ^C

執行上面查詢語句,得到以下結果:

+--------------------------+
| productname |
+--------------------------+
| Collectable Wooden Train |
| Corsair F4U ( Bird Cage) |
+--------------------------+
2 rows in set

要找到以 f 結尾的產品,我們可以使用 $f‘來匹配字符串的末尾:

SELECT 
 productname
 products
WHERE
 productname REGEXP  f$

執行上面查詢語句,得到以下結果:

+------------------+
| productname |
+------------------+
| Boeing X-32A JSF |
+------------------+
1 row in set

要查找其名稱包含“ford”的產品,就要使用以下查詢:

SELECT 
 productname
 products
WHERE
 productname REGEXP  ford

執行上面查詢語句,得到以下結果:

+----------------------------------+
| productname |
+----------------------------------+
| 1968 Ford Mustang |
| 1969 Ford Falcon |
| 1940 Ford Pickup Truck |
| 1911 Ford Town Car |
| 1932 Model A Ford J-Coupe |
| 1926 Ford Fire Engine |
| 1913 Ford Model T Speedster |
| 1934 Ford V8 Coupe |
| 1903 Ford Model A |
| 1976 Ford Gran Torino |
| 1940s Ford truck |
| 1957 Ford Thunderbird |
| 1912 Ford Model T Delivery Wagon |
| 1940 Ford Delivery Sedan |
| 1928 Ford Phaeton Deluxe |
+----------------------------------+
15 rows in set

要查找名稱只包含 10 個字符的產品,可以使用 ^‘和 $‘來匹配產品名稱的開頭和結尾,并重復 {10} 次任何字符.,作為以下查詢:

SELECT 
 productname
 products
WHERE
 productname REGEXP  ^.{10}$

執行上面查詢語句,得到以下結果:

+-------------+
| productname |
+-------------+
| HMS Bounty |
| Pont Yacht |
+-------------+
2 rows in set

其實吧,這個查詢方式是固定的,可變的是你寫的正則,所以具體咋用,就要看各位小伙伴的能力了哦。

以上是“mysql 中正則表達式搜索功能的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注丸趣 TV 行業資訊頻道!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-04發表,共計3263字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 高台县| 长治市| 阜阳市| 巴林左旗| 双鸭山市| 焉耆| 山阳县| 乐业县| 德昌县| 牡丹江市| 永年县| 盐亭县| 青阳县| 福清市| 桃园县| 南丰县| 曲水县| 蓬溪县| 察雅县| 吴堡县| 浦北县| 陵水| 胶州市| 桐柏县| 平塘县| 宜君县| 潼关县| 南华县| 临泽县| 邛崃市| 临夏县| 金昌市| 孟津县| 灵璧县| 芮城县| 汉中市| 颍上县| 桂林市| 肥东县| 黄陵县| 深州市|