mysql模糊查詢索引 MySQL模糊查詢全文索引

2021-10-17 13:17:39 字數 2569 閱讀 3194

全文索引

# 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 default '',

`name2` char(12) not null default '',

fulltext key `name` (`name`,`name2`)

) type=myisam;

# dumping data for table 't3'

insert into `t3` (`name`, `name2`) values("1", "安換嵐繕");

insert into `t3` (`name`, `name2`) values("2", "不會吧");

insert into `t3` (`name`, `name2`) values("3", "不會吧1");

insert into `t3` (`name`, `name2`) values("4", "不會吧 1");

insert into `t3` (`name`, `name2`) values("5", "真的不會吧");

insert into `t3` (`name`, `name2`) values("6", "真的 不會吧");

mysql> select * from t3;

¦ name ¦ name2 ¦

¦ 1 ¦ 安換嵐繕 ¦

¦ 2 ¦ 不會吧 ¦

¦ 3 ¦ 不會吧1 ¦

¦ 4 ¦ 不會吧 1 ¦

¦ 5 ¦ 真的不會吧 ¦

¦ 6 ¦ 真的 不會吧 ¦

6 rows in set (0.01 sec)

# 查詢詞 "不會吧"

mysql> select * from t3 where match (name,name2)

-> against ('不會吧'in boolean mode);

¦ name ¦ name2 ¦

¦ 2 ¦ 不會吧 ¦

¦ 4 ¦ 不會吧 1 ¦

¦ 6 ¦ 真的 不會吧 ¦

3 rows in set (0.00 sec)

# 查詢以詞 "不會吧" 開頭的任意詞句

mysql> select * from t3 where match (name,name2)

-> against ('不會吧*' in boolean mode);

¦ name ¦ name2 ¦

¦ 2 ¦ 不會吧 ¦

¦ 4 ¦ 不會吧 1 ¦

¦ 6 ¦ 真的 不會吧 ¦

¦ 3 ¦ 不會吧1 ¦

4 rows in set (0.01 sec)

# 查詢以詞 "不會吧" 開頭的任意詞句 並 去除詞 "真的"

mysql> select * from t3 where match (name,name2)

-> against ('+不會吧* -真的' in boolean mode);

¦ name ¦ name2 ¦

¦ 2 ¦ 不會吧 ¦

¦ 4 ¦ 不會吧 1 ¦

¦ 3 ¦ 不會吧1 ¦

3 rows in set (0.00 sec)

在上例中,

我們可以看出 mysql 的全文索引對雙位元組處理的支援還不太好,

¦ 5 ¦ 真的不會吧 ¦

這一行記錄始終未能查詢出來,

這是因為在西文中詞是以乙個空格為分隔的,

希望在將來的版本中

mysql 對此能有所改進

而用正規表示式也是會有問題的,

# 查詢詞 "不會吧"

mysql> select * from t3 where name2 regexp "不會吧";

¦ name ¦ name2 ¦

¦ 1 ¦ 安換嵐繕 ¦

¦ 2 ¦ 不會吧 ¦

¦ 3 ¦ 不會吧1 ¦

¦ 4 ¦ 不會吧 1 ¦

¦ 5 ¦ 真的不會吧 ¦

¦ 6 ¦ 真的 不會吧 ¦

6 rows in set (0.00 sec)

# 查詢以詞 "不會吧" 開頭的

mysql> select * from t3 where name2 regexp "^不會吧";

¦ name ¦ name2 ¦

¦ 2 ¦ 不會吧 ¦

¦ 3 ¦ 不會吧1 ¦

¦ 4 ¦ 不會吧 1 ¦

3 rows in set (0.00 sec)

# 查詢以詞 "不會吧" 結束的

mysql> select * from t3 where name2 regexp "不會吧$";

¦ name ¦ name2 ¦

¦ 2 ¦ 不會吧 ¦

¦ 5 ¦ 真的不會吧 ¦

¦ 6 ¦ 真的 不會吧 ¦

3 rows in set (0.00 sec)

mysql模糊查詢 MYSQL模糊查詢

mysql提供標準的sql模式匹配,以及一種基於象unix實用程式如vi grep和sed的擴充套件正規表示式模式匹配的格式。一 sql模式 sql的模式匹配允許你使用 匹配任何單個字元,而 匹配任意數目字元 包括零個字元 在 mysql中,sql的模式預設是忽略大小寫的。下面顯示一些例子。注意在你...

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...

mysql 模糊查詢

模糊查詢 返回的結果不確定 1 mysql sql 匹配模式 a,使用操作符 like 或者 not like b,表示任意數量的任意字元 標識任意單個字元 查詢使用者名稱以某個字元開頭的使用者 查詢使用者名稱以字元 l 開頭的使用者 l select from user where usernam...