更新時間:2022-07-25 10:02:51 來源:動力節(jié)點 瀏覽2255次
在MySQL教程中會學到通配符,MySQL中的通配符是允許我們非常輕松快速地從表中搜索復雜數(shù)據(jù)的字符。它通過替換一個或多個字符來處理字符串,并在將字符串匹配到表中后產(chǎn)生結(jié)果。
在正常比較中,我們使用兩個字符串,其中兩個字符串的每個字符都應該在給出輸出之前完全匹配。在通配符中,它們提供了在字符串中使用單個字符或一組字符的靈活性,這對于另一個字符串是可以接受的。
MySQL將通配符與LIKE或NOT LIKE比較運算符結(jié)合使用。LIKE 運算符與WHERE 子句一起用于查找列中指定模式的結(jié)果。
MySQL 具有以下通配符的優(yōu)點:
它提高了應用程序的性能。
它節(jié)省了從表中過濾記錄的時間。
它使復雜查詢的使用變得非常容易和快速。
它使我們能夠?qū)姶蟮乃阉饕骈_發(fā)到大型數(shù)據(jù)驅(qū)動的應用程序中。
以下是 MySQL 中使用的常見通配符類型,可以單獨使用或組合使用通配符:
序列號 |
通配符 |
說明 |
---|---|---|
1 | % | 該符號表示零個或多個字符。 |
2 | _ | 此符號用于精確匹配一個(單個)字符。 |
現(xiàn)在,我們將通過以下示例了解這些通配符在 MySQL 中的使用:
讓我們首先創(chuàng)建一個名為“ employee ”的表,其中包含以下數(shù)據(jù):
1. 百分比符號(%)
它用于從表中搜索或過濾指定 0、1 或更多字符的記錄。我們可以在 LIKE 子句的第一個位置、最后一個位置或字符串的兩側(cè)使用它。
句法
使用此通配符的基本語法是:
SELECT * FROM tab_name WHERE column_name LIKE 'X%' ;
或,
SELECT * FROM tab_name WHERE column_name LIKE '%X' ;
或,
SELECT * FROM tab_name WHERE column_name LIKE 'X%X' ;
在上面的語法中,' X ' 指定任意單個字符,%匹配任意數(shù)量的字符。
例子
此語句返回城市名稱以“F”字符開頭的所有員工。
mysql> SELECT * FROM employees WHERE city LIKE 'F%' ;
它將給出以下輸出:
同樣,此語句從表中返回城市名稱以“a”開頭并以“a”字符結(jié)尾的所有員工:
mysql> SELECT * FROM employees WHERE city LIKE 'a%a' ;
執(zhí)行成功后,我們會得到如下結(jié)果:
此語句返回 X 值可以在任何位置的所有員工:
mysql> SELECT * FROM employees WHERE city LIKE '%n%' ;
它將給出如下輸出:
如果我們想從表中返回城市不是以'a'開頭并以'a'字符結(jié)尾的所有員工,請執(zhí)行以下語句:
mysql> SELECT * FROM employees WHERE city NOT LIKE 'a%a' ;
我們將得到以下結(jié)果,我們可以看到?jīng)]有以“a”開頭并以“a”字符結(jié)尾的城市名稱。
2.下劃線(_)
當需要從與任何位置的單個字符完全匹配的表中返回結(jié)果時,我們可以使用它。
句法
使用此通配符的基本語法是:
SELECT * FROM tab_name WHERE column_name LIKE 'X_' ;
或,
SELECT * FROM tab_name WHERE column_name LIKE '_X' ;
在上面的語法中,'X ' 指定任何字符串模式,而_符號正好匹配一個字符。
例子
此語句返回年齡在 40 到 49 之間的所有員工:
SELECT * FROM employees WHERE emp_age LIKE '4_' ;
我們將看到如下結(jié)果:
此語句從表中返回城市名稱以任何字符開頭后跟“lorida”字符的所有員工:
mysql> SELECT * FROM employees WHERE city LIKE '_lorida' ;
執(zhí)行成功后,我們會得到如下結(jié)果:
如果我們想從表中返回城市不以任何字符后跟“lorida”字符的所有員工,請執(zhí)行以下語句:
mysql> SELECT * FROM employees WHERE city NOT LIKE '_lorida' ;
出現(xiàn)以下輸出:
3. 連字符 (-)
當我們需要從表中過濾一定范圍內(nèi)的記錄時,該符號用于返回結(jié)果。它是使用REGEXP_LIKE()函數(shù)的通配符的擴展版本。
此語句從employees 表中獲取包含字母“b”、“c”或“d”的所有記錄,如下所示:
mysql> SELECT * FROM employees WHERE REGEXP_LIKE(city, '[bd]' );
輸出
執(zhí)行成功后,我們會得到如下結(jié)果:
如果我們想從表中返回所有城市不包含字母“b”、“c”或“d”的員工,如下所示:
mysql> SELECT * FROM employees WHERE NOT REGEXP_LIKE(city, '[bd]' );
輸出
我們已經(jīng)了解到通配符也可以作為兩者的組合使用,讓我們通過下面的例子來理解它。
此語句返回姓名以 X 開頭且長度至少為兩個字符的所有員工:
mysql> SELECT * FROM employees WHERE city LIKE 'a_%_' ;
我們將得到以下輸出:
這是另一個產(chǎn)生輸出的示例,其中所有在收入列中的第二個位置為“5 ”的員工:
mysql> SELECT * FROM employees WHERE income LIKE '_5%' ;
我們可以得到以下輸出:
以上就是關于“MySQL通配符的介紹”,大家如果對此比較感興趣,想了解更多相關知識,可以關注一下動力節(jié)點的Java在線學習,里面的課程內(nèi)容細致全面,從入門到精通,很適合沒有基礎的小伙伴學習,希望對大家能夠有所幫助哦。