mysql通配符的具體使用
概念:
通配符(wildcard)
即:用來匹配值的一部分的特殊字符。
搜索模式(search pattern)
即:由字面值、通配符或兩者組合構(gòu)成的搜索條件。
1、 百分號(hào)(%)通配符
最常使用的通配符是百分號(hào)(%)。在搜索串中,%表示任何字符出現(xiàn)任意次數(shù)。匹配時(shí),一般是不區(qū)分大小寫的,但是根據(jù)MySQL的配置方式,搜索可以是區(qū)分大小寫的,加BINARY關(guān)鍵字。
SELECT id, name FROM test_table WHERE BINARY info LIKE '%ab%ed';
重要的是要注意到,除了一個(gè)或多個(gè)字符外,%還能匹配0個(gè)字符。%代表搜索模式中給定位置的0個(gè)、1個(gè)或多個(gè)字符,例如:
SELECT id, name FROM test_table WHERE info LIKE '%ab%ed';
注意尾空格 尾空格可能會(huì)干擾通配符匹配。例如,在保存詞anvil 時(shí), 如果它后面有一個(gè)或多個(gè)空格, 則子句WHERE prod_name LIKE '%anvil’將不會(huì)匹配它們,因?yàn)樵谧詈蟮膌后有多余的字符。解決這個(gè)問題的一個(gè)簡單的辦法是在搜索模式最后附加一個(gè)%。一個(gè)更好的辦法是使用函數(shù)(trim())去掉首尾空格,函數(shù)Trim()、RTrim()、LTrim();
注意NULL 雖然似乎%通配符可以匹配任何東西,但有一個(gè)例外,即NULL。即使是WHERE prod_name LIKE '%'也不能匹配用值NULL作為產(chǎn)品名的行。
2、 下劃線(_)通配符
下劃線的用途與%一樣,但下劃線只匹配單個(gè)字符而不是多個(gè)字符。
與%能匹配0個(gè)字符不一樣,_總是匹配一個(gè)字符,不能多也不能少。
【注】MySQL的通配符很有用。但這種功能是有代價(jià)的:通配符搜索的處理一般要比其他搜索所花時(shí)間更長。這里給出一些使用通配符要記住的技巧。
不要過度使用通配符。如果其他操作符能達(dá)到相同的目的,應(yīng)該使用其他操作符。
在確實(shí)需要使用通配符時(shí),除非絕對(duì)有必要,否則不要把它們用在搜索模式的開始處。把通配符置于搜索模式的開始處,搜索起來是最慢的。
仔細(xì)注意通配符的位置。如果放錯(cuò)地方,可能不會(huì)返回想要的數(shù)據(jù)
3、使用通配符時(shí)易忽略的一個(gè)問題
以上述 a 表為例:
當(dāng)我們要查詢以exp_asd_10_開頭的數(shù)據(jù)時(shí),sql語句應(yīng)該如何去寫?
select * from a where name like 'exp_asd_10_%'
查詢結(jié)果:
很自信的執(zhí)行了這條sql語句,你會(huì)發(fā)現(xiàn)結(jié)果并不是自己所預(yù)期的那樣,執(zhí)行上面的sql語句會(huì)把所有的以exp_asd_10開頭的數(shù)據(jù)都查找到
原因:
在sql中,下劃線_也是一個(gè)通配符,能匹配任意一個(gè)字符,像上面那樣寫的話。
正確的寫法應(yīng)該是:
select * from a where name like 'exp\_asd\_10\_%'
在_通配符前面加上轉(zhuǎn)義字符\,這樣mysql就會(huì)把下劃線通配符視為普通字符
到此這篇關(guān)于mysql通配符的具體使用的文章就介紹到這了,更多相關(guān)mysql通配符內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MySQL模糊查找like通配符使用(小白入門篇)
- MySQL通配符與正則表達(dá)式搜過濾數(shù)據(jù)詳解
- mysql 通配符(sql 高級(jí)過濾)
- MySQL模糊查詢用法大全(正則、通配符、內(nèi)置函數(shù))
- MySQL 數(shù)據(jù)庫 like 語句通配符模糊查詢小結(jié)
- Mysql| 使用通配符進(jìn)行模糊查詢?cè)斀?like,%,_)
- 淺談mysql通配符進(jìn)行模糊查詢的實(shí)現(xiàn)方法
- 淺談MySQL模糊查詢中通配符的轉(zhuǎn)義
- 在MySQL中使用通配符時(shí)應(yīng)該注意的問題
- MySql like模糊查詢通配符使用詳細(xì)介紹
相關(guān)文章
MySQL5.7并行復(fù)制原理及實(shí)現(xiàn)
MySQL 5.7并行復(fù)制的思想簡單易懂,本文就詳細(xì)的介紹了MySQL5.7并行復(fù)制原理及實(shí)現(xiàn),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06重置MySQL中表中自增列的初始值的實(shí)現(xiàn)方法
這篇文章主要介紹了重置MySQL中表中自增列的初始值的實(shí)現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下2017-03-03mysql中drop、truncate與delete的區(qū)別詳析
對(duì)于drop、truncate和delete雖然簡單,但是真要使用或者面試時(shí)候問到還是需要有一定的總結(jié),下面這篇文章主要給大家介紹了關(guān)于mysql中drop、truncate與delete區(qū)別的相關(guān)資料,需要的朋友可以參考下2022-03-03Mysql更換MyISAM存儲(chǔ)引擎為Innodb的操作記錄總結(jié)
下面小編就為大家?guī)硪黄狹ysql更換MyISAM存儲(chǔ)引擎為Innodb的操作記錄總結(jié)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03如何解決MySQL?this?is?incompatible?with?sql_mode=only_full_
MySQL的ONLY_FULL_GROUP_BY模式要求在使用GROUP?BY時(shí),SELECT語句中引用的所有列必須在GROUP?BY子句中明確指定,或者是聚合函數(shù)的一部分,本文提供了修改SQL語句、使用聚合函數(shù)、禁用ONLY_FULL_GROUP_BY等解決方法,并強(qiáng)調(diào)了在禁用該模式時(shí)應(yīng)評(píng)估其影響2024-11-11Centos 6.3將Mysql 5.1.61升級(jí)為mysql 5.6.19遇到的問題及解決方式
mysql5.6.19已經(jīng)發(fā)布很久了,一直沒有去升級(jí),最近做項(xiàng)目需要mysql5.5以上,索性直接上5.6.19吧,原本以為升級(jí)這種事情,分分鐘就完成了,沒想到還是出了各種問題,下面把部分記錄分享給大家2014-07-07MySQL數(shù)據(jù)庫管理常用命令小結(jié)
MySQL數(shù)據(jù)庫是一種開放源代碼的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),MySQL數(shù)據(jù)庫系統(tǒng)使用最常用的數(shù)據(jù)庫管理語言--結(jié)構(gòu)化查詢語言(SQL)進(jìn)行數(shù)據(jù)庫管理,MySQL數(shù)據(jù)庫管理有它自己獨(dú)特的使用命令,下面為您介紹MySQL數(shù)據(jù)庫管理常用命令。2011-03-03