欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > MySQL高效模糊搜索之內置函數locate instr position find_in_set使用詳解

MySQL高效模糊搜索之內置函數locate instr position find_in_set使用詳解

熱門標簽:如何在高德地圖標注新地址 外呼系統服務 高德地圖標注中心個人注冊 高德地圖標注模式 400電話辦理都選易號網 外呼系統防封號違法嗎 湘潭電銷機器人咨詢電話 寶應電信400電話辦理費用 電銷機器人針對的

常用的一共有4個方法,如下:

1.使用locate()方法

普通用法:

SELECT`column`from`table`wherelocate('keyword',`condition`)>0

類似于java的indexOf();

不過locate()只要找到返回的結果都大于0(即使是查詢的內容就是最開始部分),沒有查找到才返回0;

指定起始位置:

SELECT LOCATE('bar','foobarbar',5);(從foobarbar的第五個位置開始查找)

2.使用instr()函數(據說是locate()的別名函數)

SELECT `column` from `table` where instr(`condition`,‘keyword')>0

唯一不同的是查詢內容的位置不同

3.使用position()方法,(據說也是locate()方法的別名函數,功能一樣)

SELECT `column` from `table` where position(‘keyword' IN `condition`)

不過它不再是通過返回值來判斷,而是使用關鍵字in

4.使用find_in_set()函數

如:find_in_set(str,strlist),strlist必須要是以逗號分隔的字符串

如果字符串str是在的strlist組成的N子串的字符串列表,返回值的范圍為1到N

SQL>SELECTFIND_IN_SET('b','a,b,c,d');
---------------------------------------------------------+
|SELECTFIND_IN_SET('b','a,b,c,d')|
---------------------------------------------------------+
|2|
---------------------------------------------------------+
1rowinset(0.00sec)

總結:locate、position和instr的差別只是參數的位置不同,同時locate多一個起始位置的參數外,兩者是一樣的。

find_in_set()比較特殊,但它們都是返回要查找的子字符串在指定字符串中的位置。

速度上前3個要比用like稍快一點。(不過這四個函數都不能使用索引)

下面為再為大家介紹一下Mysql中Like的使用方法

MySQL的like語句中的通配符:百分號、下劃線和escape

%:表示任意個或多個字符??善ヅ淙我忸愋秃烷L度的字符。

Sql代碼

select * from user where username like '%huxiao'; 

select * from user where username like 'huxiao%'; 

select * from user where username like '%huxiao%';

另外,如果需要找出u_name中既有“三”又有“貓”的記錄,請使用and條件

SELECT * FROM [user] WHERE u_name LIKE ‘%三%' AND u_name LIKE ‘%貓%'

若使用 SELECT * FROM [user] WHERE u_name LIKE ‘%三%貓%'

雖然能搜索出“三腳貓”,但不能搜索出符合條件的“張貓三”。

_:表示任意單個字符。匹配單個任意字符,它常用來限制表達式的字符長度語句:(可以代表一個中文字符)
 

Sql代碼  

select * from user where username like '_'; 

select * from user where username like 'huxia_'; 

select * from user where username like 'h_xiao'; 

 如果我就真的要查%或者_,怎么辦呢?使用escape,轉義字符后面的%或_就不作為通配符了,注意前面沒有轉義字符的%和_仍然起通配符作用

Sql代碼  

select username from gg_user where username like '%xiao/_%' escape '/';

select username from gg_user where username like '%xiao/%%' escape '/';

MySQL 通配符

SQL的模式匹配允許你使用“_”匹配任何單個字符,而“%”匹配任意數目字符(包括零個字符)。在 MySQL中,SQL的模式缺省是忽略大小寫的。下面顯示一些例子。

注意在你使用SQL模式時,你不能使用=或!=;而使用LIKE或NOT LIKE比較操作符。

為了找出以“b”開頭的名字:

mysql> SELECT * FROM pet WHERE name LIKE "b%";
+--------+--------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+------------+
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
+--------+--------+---------+------+------------+------------+

為了找出以“fy”結尾的名字:

mysql> SELECT * FROM pet WHERE name LIKE "%fy";
+--------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+-------+
| Fluffy | Harold | cat | f | 1993-02-04 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+--------+--------+---------+------+------------+-------+

為了找出包含一個“w”的名字:

mysql> SELECT * FROM pet WHERE name LIKE "%w%";
+----------+-------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+------------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
+----------+-------+---------+------+------------+------------+

為了找出包含正好5個字符的名字,使用“_”模式字符:

mysql> SELECT * FROM pet WHERE name LIKE "_____";
+-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+

由MySQL提供的模式匹配的其他類型是使用擴展正則表達式。當你對這類模式進行匹配測試時,使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,它們是同義詞)。

擴展正則表達式的一些字符是:

“.”匹配任何單個的字符。

一個字符類“[...]”匹配在方括號內的任何字符。

例如,“[abc]”匹配“a”、“b”或“c”。為了命名字符的一個范圍,使用一個“-”。“[a-z]” 匹配任何小寫字母,而“[0-9]”匹配任何數字。

“ * ”匹配零個或多個在它前面的東西。

例如,“x*”匹配任何數量的“x”字符,“[0-9]*”匹配的任何數量的數字,而“.*”匹配任何數量的任何東西。

正則表達式是區分大小寫的,但是如果你希望,你能使用一個字符類匹配兩種寫法。

例如,“[aA]”匹配小寫或大寫的“a”而“[a-zA-Z]”匹配兩種寫法的任何字母。

如果它出現在被測試值的任何地方,模式就匹配(只要他們匹配整個值,SQL模式匹配)。

為了定位一個模式以便它必須匹配被測試值的開始或結尾,在模式開始處使用“^”或在模式的結尾用“$”。

為了說明擴展正則表達式如何工作,上面所示的LIKE查詢在下面使用REGEXP重寫:

為了找出以“b”開頭的名字,使用“^”匹配名字的開始并且“[bB]”匹配小寫或大寫的“b”:

mysql> SELECT * FROM pet WHERE name REGEXP "^[bB]";
+--------+--------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+------------+
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
+--------+--------+---------+------+------------+------------+

為了找出以“fy”結尾的名字,使用“$”匹配名字的結尾:

mysql> SELECT * FROM pet WHERE name REGEXP "fy$";
+--------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+-------+
| Fluffy | Harold | cat | f | 1993-02-04 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+--------+--------+---------+------+------------+-------+

為了找出包含一個“w”的名字,使用“[wW]”匹配小寫或大寫的“w”:

mysql> SELECT * FROM pet WHERE name REGEXP "[wW]";
+----------+-------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+------------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
+----------+-------+---------+------+------------+------------+

既然如果一個正規表達式出現在值的任何地方,其模式匹配了,就不必再先前的查詢中在模式的兩方面放置一個通配符以使得它匹配整個值,就像如果你使用了一個SQL模式那樣。

 為了找出包含正好5個字符的名字,使用“^”和“$”匹配名字的開始和結尾,和5個“.”實例在兩者之間:

mysql> SELECT * FROM pet WHERE name REGEXP "^.....$";
+-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+

你也可以使用“{n}”“重復n次”操作符重寫先前的查詢:

mysql> SELECT * FROM pet WHERE name REGEXP "^.{5}$";
+-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+

以上是Mysql模糊搜索方法Like的使用方法,與前locate instr position這三個內置函數相比性能上要慢些,無論哪種模糊搜索在查詢時都會消耗大量服務器資源所以在實際工作中我們應盡量少用模糊搜索

您可能感興趣的文章:
  • mysql中find_in_set()函數的使用及in()用法詳解
  • MySQL的FIND_IN_SET函數使用方法分享
  • mysql中find_in_set()函數的使用詳解
  • mysql通過find_in_set()函數實現where in()順序排序
  • mysql中find_in_set函數的基本使用方法

標簽:宿遷 黔南 賀州 黃山 南充 蘭州 馬鞍山 佛山

巨人網絡通訊聲明:本文標題《MySQL高效模糊搜索之內置函數locate instr position find_in_set使用詳解》,本文關鍵詞  MySQL,高效,模糊,搜索,之,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL高效模糊搜索之內置函數locate instr position find_in_set使用詳解》相關的同類信息!
  • 本頁收集關于MySQL高效模糊搜索之內置函數locate instr position find_in_set使用詳解的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    久久精品一级爱片| 国产成人三级在线观看| 91亚洲一线产区二线产区| 无码人妻精品一区二区三区夜夜嗨| 欧美三级在线免费观看| 国产日产亚洲精品系列| 久久99国内精品| 精品无码国产污污污免费网站| 色婷婷综合中文久久一本| 欧美国产视频在线| 日本中文字幕一区二区有限公司| 丁香另类激情小说| 日日噜噜夜夜狠狠久久波多野| 日韩欧美资源站| 视频一区二区三区入口| 亚洲国产精品成人综合久久久| 一本一道综合狠狠老| 中文字幕日韩一区| 99久久99久久精品免费看蜜桃| 亚洲黄色免费视频| 久久久久久99精品| 国产裸体歌舞团一区二区| 99国产精品无码| 中文字幕一区日韩精品欧美| 白白色 亚洲乱淫| 欧美视频一区二区三区| 亚洲国产成人tv| 欧美极品jizzhd欧美仙踪林| 555www色欧美视频| 久久精品久久久精品美女| 微拍福利一区二区| 国产精品免费免费| 91麻豆产精品久久久久久| 欧美亚洲一区二区在线观看| 亚洲第一精品在线| 女~淫辱の触手3d动漫| 国产欧美一区二区精品仙草咪| 免费在线视频一区| 欧美熟妇激情一区二区三区| 欧美一区二区美女| 韩国av一区二区三区在线观看| 国产精品815.cc红桃| 国产色产综合色产在线视频| av中文字幕一区| 9191成人精品久久| 国产做a爰片久久毛片| 欧美卡一卡二卡三| 五月婷婷激情综合| 中文字幕人妻一区二区三区在线视频| 欧美一区二区三区日韩| 九九久久精品视频| 色哟哟国产精品| 日韩一区欧美二区| 色偷偷www8888| 国产精品乱人伦| 亚洲一级Av无码毛片久久精品| 欧美在线观看视频一区二区三区| 亚洲人成人一区二区在线观看| 成人白浆超碰人人人人| 51精品秘密在线观看| 视频一区中文字幕国产| 在线视频这里只有精品| 亚洲一区二区三区爽爽爽爽爽| 亚洲熟妇一区二区| 久久久99精品免费观看| 91麻豆免费观看| 欧美高清性hdvideosex| 国产伦精品一区二区三区在线观看| 免费视频91蜜桃| 亚洲最大成人综合| 北京富婆泄欲对白| 国产精品久久久久婷婷| 无码人妻精品一区二区三区温州| 欧美不卡视频一区| 91麻豆.com| 国产日产欧产精品推荐色| 精品少妇人妻av一区二区三区| 日韩一区二区免费高清| 99久久精品99国产精品| 久久亚洲私人国产精品va媚药| 国产一区二区在线观看视频| 欧美日韩在线综合| 国产成a人亚洲精| 欧美va在线播放| 国产乱国产乱老熟300部视频| 欧美一区二区黄| 99视频一区二区三区| 26uuu亚洲综合色| 男男一级淫片免费播放| 精品久久久久久久一区二区蜜臀| 国产精品18久久久久久久久久久久| 国产黄在线免费观看| 久久国产精品无码网站| 欧美日韩1234| 91丨porny丨国产入口| 国产亚洲欧美在线| 91久久免费视频| 手机精品视频在线观看| 欧美在线免费播放| 九色综合国产一区二区三区| 777色狠狠一区二区三区| 99re8在线精品视频免费播放| 欧美一级日韩一级| 制服.丝袜.亚洲.中文.综合懂| 日韩免费看的电影| 国产高潮失禁喷水爽到抽搐| 最新国产の精品合集bt伙计| 久草福利资源在线| 国产一区二区三区蝌蚪| 欧美怡红院视频| 极品少妇一区二区| 日韩免费看的电影| 99精品国产一区二区三区不卡| 日韩亚洲欧美在线观看| 波多野结衣加勒比| 亚洲高清免费观看高清完整版在线观看| 国产中年熟女高潮大集合| 亚洲欧洲制服丝袜| 精品无码国产污污污免费网站 | 欧美性xxxx图片| 亚洲成a人v欧美综合天堂下载| 黄色片网站在线播放| 久久国产三级精品| 精品乱人伦小说| 欧洲av一区二区三区| 免费看欧美女人艹b| 欧美不卡在线视频| 一区二区三区久久久久| 久久激五月天综合精品| 久久综合99re88久久爱| 香蕉久久久久久久| 国产成人av电影在线播放| 国产精品免费网站在线观看| 国产大片免费看| aa级大片欧美| 亚洲主播在线观看| 精品国产凹凸成av人导航| 久久亚洲AV无码专区成人国产| 亚洲观看高清完整版在线观看| 欧美手机在线观看| 成人在线综合网站| 亚洲日本在线天堂| 欧美午夜寂寞影院| 星空大象在线观看免费播放| 亚洲主播在线观看| 日韩视频一区二区三区在线播放| 中文字幕avav| 国产精品亲子伦对白| 鲁丝一区二区三区| 国产69精品久久777的优势| 国产精品久久久久久久久免费樱桃 | 美洲天堂一区二卡三卡四卡视频| 欧美日韩视频在线观看一区二区三区 | 中文字幕第69页| 久久精品av麻豆的观看方式| 国产视频不卡一区| 日本乱人伦aⅴ精品| 成人免费观看男女羞羞视频| 亚洲精品va在线观看| 欧美放荡的少妇| 少妇精品无码一区二区免费视频| 毛片不卡一区二区| 欧美国产一区在线| 欧美亚洲精品一区| 女~淫辱の触手3d动漫| 日本不卡不码高清免费观看| 国产日韩欧美精品电影三级在线| 自拍偷拍视频亚洲| 丁香网亚洲国际| 国产精品九色蝌蚪自拍| 欧美日韩国产三级| 成人无码av片在线观看| 99视频超级精品| 免费成人美女在线观看| 国产精品你懂的在线| 欧美蜜桃一区二区三区| 国产在视频线精品视频| 日本黄色一级网站| 午夜视频一区二区| 国产午夜精品一区二区三区视频| 国产精品情侣呻吟对白视频| 91色视频在线| 亚洲国产成人高清精品| 久久精品日产第一区二区三区高清版 | 欧美另类z0zxhd电影| 精品久久久久一区二区| 国产精一区二区三区| 国产日韩欧美综合在线| 国产精品精品软件男同| 日韩Av无码精品| 成人综合婷婷国产精品久久免费| 亚洲丝袜美腿综合| 欧美性videosxxxxx| 亚洲av无码国产精品麻豆天美| 国产一区二区三区免费| 一个色综合网站| 中文字幕不卡三区| 日本韩国精品一区二区在线观看| 午夜性福利视频| 青草国产精品久久久久久|