MySQL LIKE模糊查詢(xún)
我們知道在 MySQL 中使用 SQL SELECT 命令來(lái)讀取數(shù)據(jù), 同時(shí)我們可以在 SELECT 語(yǔ)句中使用 WHERE 子句來(lái)獲取指定的記錄。
WHERE 子句中可以使用等號(hào) = 來(lái)設(shè)定獲取數(shù)據(jù)的條件,如 "runoob_author = 'RUNOOB.COM'"。
但是有時(shí)候我們需要獲取 runoob_author 字段含有 "COM" 字符的所有記錄,這時(shí)我們就需要在 WHERE 子句中使用 SQL LIKE 子句。
SQL LIKE 子句中使用百分號(hào) %字符來(lái)表示任意字符,類(lèi)似于UNIX或正則表達(dá)式中的星號(hào) *。
如果沒(méi)有使用百分號(hào) %, LIKE 子句與等號(hào) = 的效果是一樣的。
語(yǔ)法
以下是 SQL SELECT 語(yǔ)句使用 LIKE 子句從數(shù)據(jù)表中讀取數(shù)據(jù)的通用語(yǔ)法:
SELECT field1, field2,...fieldN FROM table_name WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
-
你可以在 WHERE 子句中指定任何條件。
-
你可以在 WHERE 子句中使用LIKE子句。
-
你可以使用LIKE子句代替等號(hào) =。
-
LIKE 通常與 % 一同使用,類(lèi)似于一個(gè)元字符的搜索。
-
你可以使用 AND 或者 OR 指定一個(gè)或多個(gè)條件。
-
你可以在 DELETE 或 UPDATE 命令中使用 WHERE…LIKE 子句來(lái)指定條件。
mysql中模糊查詢(xún)的四種用法:
一.%:表示任意0個(gè)或多個(gè)字符??善ヅ淙我忸?lèi)型和長(zhǎng)度的字符,有些情況下若是中文,請(qǐng)使用兩個(gè)百 分號(hào)(%%)表示。
*注:like '%龍%':查詢(xún)出所有含有“龍”的記錄
1. 所查詢(xún)字段 + like '%龍%'
eg:select * from user where realname like '%龍%'
把含有“龍”字的 realname 字段搜索出來(lái)
2. 所查詢(xún)字段 + like '%龍%' and 所查詢(xún)字段 + like '%文%'
eg: select * from user where realname like '%龍%' and realname like '%文%'
= 所查詢(xún)字段 + like '%文%' and 所查詢(xún)字段 + like '%龍%'
eg: select * from user where realname like '%文%' and realname like '%龍%'
3. 查詢(xún)出既含有“龍”同時(shí)又有“文”的所有記錄
realname like'%龍%文%':查詢(xún)所有“龍文”記錄,可以是“龍_文”“_龍文”“龍文_”
“龍”字須在前面,“文”字在后面
select * from user where realname like '%龍%文%'
realname like'%文%龍%':查詢(xún)所有“文龍”記錄,可以是“文_龍”“_文龍”“文龍_”
“文”字須在前面,“龍”字在后面
select * from user where realname like '%文%龍%'
二._: 表示任意單個(gè)字符。匹配單個(gè)任意字符,它常用來(lái)限制表達(dá)式的字符長(zhǎng)度語(yǔ)句:
1.查詢(xún)出中間含有“林”字的realname字段(前提:名字三個(gè)字)
select * from user where realname like '_林_'
=select * from user where realname like '%_林_%'
只能查詢(xún)出類(lèi)似“余林文”這樣的realname為三個(gè)字且中間一個(gè)字為:“林”
2.查詢(xún)出姓林的姓名(名字三個(gè)字)
select * from user where realname like'林__'(這里有兩橫杠)
=select * from user where realname like '%林__%'(這里有兩橫杠)
查詢(xún)出姓“林”的realname,且realname的字?jǐn)?shù)必須為3
3.查詢(xún)名字最后一個(gè)字為“林”的姓名(名字三個(gè)字)
select * from user where realname like '__林'(這里有兩橫杠)
= select * from user where realname like '%__林%'(這里有兩橫杠)
查詢(xún)出姓名最后一個(gè)字為“林”的姓名,且realname的字?jǐn)?shù)必須為3
4.查詢(xún)出姓林的姓名(姓名只有兩個(gè)字)
select * from user where realname like '林_'
查詢(xún)出姓林的姓名(姓名可以是兩個(gè)字,也可以是三個(gè)字)
select * from user where realname like '%林_%'
5.查詢(xún)名字最后一個(gè)字為“林”的姓名(姓名只有兩個(gè)字)
select * from user where realname like '_林'
查詢(xún)名字最后一個(gè)字為“林”的姓名(姓名可以有兩個(gè)字,也可以是三個(gè)字)
select * from user where realname like '%_林%'
三.[ ]:表示括號(hào)內(nèi)所列字符中的一個(gè)(類(lèi)似正則表達(dá)式)。指定一個(gè)字符、字符串或范圍,要求所匹配對(duì)象為它們中的任一個(gè)。
select * from user where realname like '[張蔡王]杰'
查詢(xún)出“張杰”,“蔡杰”,“王杰”(而不是“張蔡王杰”)
如 [ ] 內(nèi)有一系列字符(01234、abcde之類(lèi)的)則可略寫(xiě)為“0-4”、“a-e”
select * from user where realname like '林[1-9]'將會(huì)查詢(xún)出“林1”“林2”……“林9”
四.[^ ] :表示不在括號(hào)所列之內(nèi)的單個(gè)字符。其取值和 [] 相同,但它要求所匹配對(duì)象為指定字符以外的任一個(gè)字符。
select * from user where realname like '[^張蔡王]杰'
查詢(xún)出不姓“張”,“蔡”,“王”的“林杰”,“趙杰”等
select * from user where realname like '林[^1-4]'
將排除“林1”到“林4”,尋找“林5”、“林6”、……
推薦教程:mysql視頻教程