關(guān)于MySQL中的 like操作符詳情
1、簡(jiǎn)介
當(dāng)對(duì)未知或者說(shuō)知道某一部分的值進(jìn)行過(guò)濾時(shí),可以使用like操作符;like操作符用于模糊匹配。
like支持兩個(gè)通配符,它們分別是:
%
通配符,用于匹配多個(gè)字符_
通配符,用于匹配單個(gè)字符
通配符根據(jù)其所處未知又分為六種匹配方式:
匹配方式 | 作用 |
---|---|
%xx | 表示右匹配,右邊的xx字符需要完全相等,左邊可以是任意字符,也可以沒有字符 |
_xx | 表示右匹配,右邊的xx字符需要完全相等,左邊可以是任意一個(gè)字符,必須是一個(gè)不能沒有字符 |
xx% | 表示左匹配,右邊的xx字符需要完全相等,右邊可以是任意字符,也可以沒有字符 |
xx_ | 表示左匹配,左邊的xx字符需要完全相等,右邊可以是任意一個(gè)字符,必須是一個(gè)不能沒有字符 |
%xx% | 表示中間匹配,中間必須完全相等,左右兩邊可以是任意字符,左右兩邊可以沒有其他字符 |
xx | 表示中間匹配,中間必須完全相等,左右兩邊可以是任意一個(gè)字符,左右兩邊必須是一個(gè)不能沒有字符 |
2、正文
首先準(zhǔn)備一張User表,DDL和表數(shù)據(jù)如下所示,可以直接復(fù)制使用。
SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主鍵', `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用戶名', `age` int(11) NOT NULL COMMENT '年齡', `sex` smallint(6) NOT NULL COMMENT '性別', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of user -- ---------------------------- INSERT INTO `user` VALUES (1, '李子捌', 18, 1); INSERT INTO `user` VALUES (2, '張三', 22, 1); INSERT INTO `user` VALUES (3, '李四', 38, 1); INSERT INTO `user` VALUES (4, '王五', 25, 1); INSERT INTO `user` VALUES (5, '六麻子', 13, 0); INSERT INTO `user` VALUES (6, '田七', 37, 1); INSERT INTO `user` VALUES (7, '謝禮', 18, 1); SET FOREIGN_KEY_CHECKS = 1; 復(fù)制代碼 數(shù)據(jù)的初始順序如下所示: mysql> select * from user; +----+--------+-----+-----+ | id | name | age | sex | +----+--------+-----+-----+ | 1 | 李子捌 | 18 | 1 | | 2 | 張三 | 22 | 1 | | 3 | 李四 | 38 | 1 | | 4 | 王五 | 25 | 1 | | 5 | 六麻子 | 13 | 0 | | 6 | 田七 | 37 | 1 | | 7 | 謝禮 | 18 | 1 | +----+--------+-----+-----+ 7 rows in set (0.00 sec)
2.1 %通配符
%通配符有三種匹配方式,分別是%xx
、xx%
、 %xx%
,接下來(lái)演示三者的簡(jiǎn)單用法。
需求:
查詢user
表中姓氏為張的用戶
語(yǔ)句:
mysql> select * from user where name like '張%'; +----+------+-----+-----+ | id | name | age | sex | +----+------+-----+-----+ | 2 | 張三 | 22 | 1 | +----+------+-----+-----+ 1 row in set (0.00 sec)
需求:
查詢user
表中姓名以七結(jié)尾的用戶
語(yǔ)句:
mysql> select * from user where name like '%七'; +----+------+-----+-----+ | id | name | age | sex | +----+------+-----+-----+ | 6 | 田七 | 37 | 1 | +----+------+-----+-----+ 1 row in set (0.00 sec)
需求:
查詢user
表中姓名中包含李字符的用戶
語(yǔ)句:
mysql> select * from user where name like '%李%'; +----+--------+-----+-----+ | id | name | age | sex | +----+--------+-----+-----+ | 1 | 李子捌 | 18 | 1 | | 3 | 李四 | 38 | 1 | +----+--------+-----+-----+ 2 rows in set (0.00 sec)
2.2 _通配符
_
通配符和%
通配符的區(qū)別在于 _只匹配一個(gè)字符,并且必須匹配一個(gè)字符;而%可以匹配多個(gè)字符,甚至0個(gè)字符。
需求:
查詢user
表中姓氏為李,并且名字只有兩個(gè)中文的用戶
語(yǔ)句:
mysql> select * from user where name like '李_'; +----+------+-----+-----+ | id | name | age | sex | +----+------+-----+-----+ | 3 | 李四 | 38 | 1 | +----+------+-----+-----+ 1 row in set (0.00 sec)
需求:
查詢user
表中名為三的用戶
語(yǔ)句:
mysql> select * from user where name like '_三'; +----+------+-----+-----+ | id | name | age | sex | +----+------+-----+-----+ | 2 | 張三 | 22 | 1 | +----+------+-----+-----+ 1 row in set (0.00 sec)
需求:
查詢user
表中姓名為三個(gè)子,并且第二個(gè)子為麻的用戶
語(yǔ)句:
mysql> select * from user where name like '_麻_'; +----+--------+-----+-----+ | id | name | age | sex | +----+--------+-----+-----+ | 5 | 六麻子 | 13 | 0 | +----+--------+-----+-----+ 1 row in set (0.00 sec)
2.3 通配符使用注意事項(xiàng)
通配符非常強(qiáng)大,我相信很多人都經(jīng)常使用通配符,但是字符串匹配往往并不是一件性能特別快的事情。因此我們?cè)谑褂猛ㄅ浞臅r(shí)候有一些注意事項(xiàng)需要時(shí)刻記住。
- 能不用則不用的原則,不用能避免通配符帶來(lái)的全部問題,所以如果其他操作符能查詢出來(lái),就不要使用like
- 在使用通配符的地方,盡量縮小查詢范圍,如果有多個(gè)查詢條件,應(yīng)該考慮能否將通配符放置到其他過(guò)濾條件的后面
- 特別注意通配符的選擇,以及通配符的位置,可以參考六種匹配方式選擇自己合適的
到此這篇關(guān)于MySQL
之like
操作符詳情的文章就介紹到這了,更多相關(guān)MySQL之like操作符內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
與MSSQL對(duì)比學(xué)習(xí)MYSQL的心得(一)--基本語(yǔ)法
最開始接觸的數(shù)據(jù)庫(kù)為MSSQL,不過(guò)最近項(xiàng)目需求,仔細(xì)學(xué)習(xí)了下MYSQL,下面就對(duì)比MSSQL,把MYSQL的學(xué)習(xí)心得分享給大家2014-06-06mysql修改自增長(zhǎng)主鍵int類型為char類型示例
這篇文章主要介紹了mysql修改自增長(zhǎng)主鍵int類型為char類型示例,需要的朋友可以參考下2015-04-04mysql優(yōu)化之query_cache_limit參數(shù)說(shuō)明
query_cache_limit指定單個(gè)查詢能夠使用的緩沖區(qū)大小,缺省為1M,一般不需要優(yōu)化2021-07-07MySQL存儲(chǔ)過(guò)程中實(shí)現(xiàn)執(zhí)行動(dòng)態(tài)SQL語(yǔ)句的方法
這篇文章主要介紹了MySQL存儲(chǔ)過(guò)程中實(shí)現(xiàn)執(zhí)行動(dòng)態(tài)SQL語(yǔ)句的方法,實(shí)例分析了MySQL中構(gòu)造及執(zhí)行動(dòng)態(tài)SQL語(yǔ)句的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07MySQL性能優(yōu)化配置參數(shù)之thread_cache和table_cache詳解
這篇文章主要介紹了MySQL性能優(yōu)化配置參數(shù)之thread_cache和table_cache詳解,THREAD_CACHE是Mysql的連接池,table_cache指定表高速緩存的大小,需要的朋友可以參考下2014-07-07新建一個(gè)MySQL數(shù)據(jù)庫(kù)的簡(jiǎn)單教程
這篇文章主要介紹了新建一個(gè)MySQL數(shù)據(jù)庫(kù)的簡(jiǎn)單教程,是MySQL入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-05-05