mysql中模糊查詢一般使用 like 關鍵字 例如建立表如下所示
create table `user` (
`id` int(4) not null auto_increment,
`username` varchar(50) character set utf8 not null comment '使用者名稱',
`password` varchar(100) character set utf8 default '' comment '密碼',
`email` varchar(100) character set utf8 default '' comment '郵箱',
`mobile` varchar(100) character set utf8 default '' comment '手機號',
`status` tinyint(1) default 1 comment '狀態 0:禁用 1:正常',
primary key (`id`) using btree,
unique index `username`(`username`) using btree
) engine = innodb auto_increment = 2 character set = utf8 comment = '使用者表' row_format = dynamic;
在表中建立了兩個索引乙個id主鍵索引,乙個username唯一索引,當我們使用模糊查詢,查詢所有張姓使用者、或者所有名為
三、或者username中包含有三的使用者,可以有sql語句:
select * from user where username like '張%'
select * from user where username like '%三'
select * from user where username like '%三%'
但是在上面的三條sql語句中僅有第一條使用到索引,第二條和第三條sql語句並不符合mysql索引的左字首原則。mysql提供有其他函式,其中有字串函式instr(str,substr),可以使用該函式代替第
二、第三種sql語句的模糊查詢,語法是
instr(str,substr) 函式的意思是:這個函式返回字串在某乙個欄位的內容中的位置, 沒有找到字串返回0,否則返回位置(從1開始)
select * from user where instr(username,'三')
大於0可以省略,預設是大於零的
注意如果建立有索引
select * from user where username like '張%' 不等價於 select * from user where instr(username,'張') = 1
原因是instr(str,substr),無法使用索引,而 like 'str%',還是可以使用到一部分索引的,我們可以去解釋一下這些語句
但是在其他查詢中,該字段未建立索引,比如模糊查詢上表中的郵箱,instr(str,substr)的效率確實優於 like '%str%'
mysql模糊查詢 MYSQL模糊查詢
mysql提供標準的sql模式匹配,以及一種基於象unix實用程式如vi grep和sed的擴充套件正規表示式模式匹配的格式。一 sql模式 sql的模式匹配允許你使用 匹配任何單個字元,而 匹配任意數目字元 包括零個字元 在 mysql中,sql的模式預設是忽略大小寫的。下面顯示一些例子。注意在你...
mysql模糊查詢索引 MySQL模糊查詢全文索引
全文索引 mysql front dump 2.5 host localhost database test server version 4.0.12 nt log table structure for table t3 create table t3 name char 12 not null...
mysql 正反模糊查詢 mysql模糊查詢
mysql 使用內建函式進行模糊查詢 locate,position,instr,find in set 1 locate substr str,pos 方法 2 position substr in field 方法 3 instr str substr 方法 4 find in set str1...