1. 程式人生 > 其它 >《MySQL必知必會》學習筆記——第八章(用萬用字元過濾)

《MySQL必知必會》學習筆記——第八章(用萬用字元過濾)

技術標籤:MySQLmysql

文章目錄

前文連線:
《MySQL必知必會》——書中表的生成
《MySQL必知必會》——第三章(瞭解資料庫和表) 關鍵詞:USE、SHOW
《MySQL必知必會》——第四章(檢索資料) 關鍵詞:SELECT
《MySQL必知必會》——第五章(排序檢索資料) 關鍵詞:ORDER BY
《MySQL必知必會》——第六章(過濾資料) 關鍵詞:WHERE
《MySQL必知必會》——第七章(資料過濾) 關鍵詞:WHERE、AND、OR、IN

前面介紹的過濾資料,都是已知具體資料進行過濾,但有時我們需要一些模糊過濾,例如選出某列中包含特定文字的行(如選取文字中包含like的行),這時我們就需要用萬用字元去做,具體看下面:

8.1 LIKE操作符

LIKE操作符是WHERE語句下的子句操作符,其和萬用字元一起使用來對資料進行模糊匹配。

8.1.1 % 萬用字元

% 萬用字元表示: 任意字元出現任意次數,即匹配任意字串 ,我們具體看看就懂:

# jet% 會去匹配任意以jet開頭的詞!
SELECT prod_id, prod_name FROM products WHERE prod_name LIKE 'jet%'

萬用字元可以在任意位置使用,也可以使用多個萬用字元,我們舉例看看:

# %anvil% 匹配任意位置出現anvil的詞!
SELECT prod_id, prod_name FROM products WHERE
prod_name LIKE '%anvil%'
# s%e 匹配以s開頭,以e結尾的任意詞
SELECT prod_id, prod_name FROM products WHERE prod_name LIKE 's%e';

注意:

  • %可以匹配0個、1個或任一個字串
  • 但不匹配NULL,即當某行為NULL時,是匹配不上的

8.1.2 _ 萬用字元

_(下劃線)萬用字元 作用和%萬用字元一樣,僅僅是隻能匹配一個字元,而%萬用字元可以匹配任意多個字元!舉例看看:

# _ ton anvil 僅僅匹配下劃線處只有一位字元,並且後面要一致的字串!,如下圖所示:
SELECT prod_id, prod_name FROM
products WHERE prod_name LIKE '_ ton anvil';

注意:

  • % 可以匹配0、1、任意多個字元
  • _ 只能匹配一個字元,不能多也不能少

8.2 使用萬用字元的技巧

通過上面的舉例,我們發現萬用字元是很有用的,但也是有代價的,因為萬用字元的搜尋處理是通過遍歷資料得到的,和前面過濾資料相比慢很多!

技巧:

  • 若其他操作也可以達到目的,儘量不要使用萬用字元
  • 在使用萬用字元時,儘量不要將其放在搜尋模式的開頭,這個位置是最慢的
  • 注意萬用字元放置的位置!

總結:

  • SELECT 列名 FROM 表名 WHERE 列名 LIKE ‘萬用字元’:匹配某字元的行