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