中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-07-27 09:24:49 來源:億速云 閱讀:128 作者:小新 欄目:MySQL數據庫

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

具體如下:

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

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

SELECT 
 column_list
FROM
 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
FROM
 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開頭的產品,其中字符^表示從字符串的開頭匹配,完事字符|如果無法匹配,則搜索替代方法。下表說明了正則表達式中一些常用的元字符和構造:

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

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

SELECT 
 productname
FROM
 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
FROM
 products
WHERE
 productname REGEXP BINARY '^C';

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

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

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

SELECT 
 productname
FROM
 products
WHERE
 productname REGEXP 'f$';

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

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

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

SELECT 
 productname
FROM
 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
FROM
 products
WHERE
 productname REGEXP '^.{10}$';

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

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

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

卓资县| 和田市| 曲沃县| 南昌市| 汕尾市| 靖江市| 永登县| 罗江县| 保亭| 新丰县| 伊通| 永修县| 嵩明县| 宁波市| 莲花县| 应城市| 始兴县| 双桥区| 温宿县| 宁夏| 南康市| 东源县| 惠来县| 延边| 酒泉市| 蓬安县| 宁明县| 明水县| 长宁区| 安塞县| 安丘市| 宁陵县| 平泉县| 普兰县| 鹤山市| 曲沃县| 卢氏县| 紫云| 泰宁县| 科技| 吉水县|