<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
通常在實際應用中,會涉及到模糊查詢的需求,查詢在 MySQL 中使用 SQL SELECT 命令來讀取資料,有條件的查詢可以在 SELECT 語句中使用 WHERE 子句來獲取記錄
有時候我們需要獲取某欄位含有 “xxxxx” 字元的所有記錄,這時就是模糊查詢,下面介紹一下在MySQL中實現模糊查詢的兩種方式
MySQL 查詢資料使用SQL SELECT語句
MySQL資料庫中查詢資料通用的 SELECT 語法:
SELECT column_name, column_name FROM table_name [WHERE Clause] [LIMIT N][ OFFSET M]
說明:
根據上述的語法,模糊查詢的限制位置在 where 語句後,即like 在 where 中使用
SELECT field1, field2,....,fieldN FROM table_name WHERE field1 LIKE condition;
說明:
前提準備:建立表與插入資料
-- ---------------------------- -- Table structure for product -- ---------------------------- DROP TABLE IF EXISTS `product`; CREATE TABLE `product` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵', `product_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '產品名稱', `price` decimal(10, 2) UNSIGNED NOT NULL COMMENT '產品價格', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of product -- ---------------------------- INSERT INTO `product` VALUES (1, 'Apple iPhone 13 (A2634)', 6799.00); INSERT INTO `product` VALUES (2, 'HUAWEI P50 Pro', 6488.00); INSERT INTO `product` VALUES (3, 'MIX4', 4999.00); INSERT INTO `product` VALUES (4, 'OPPO Find X3', 3999.00); INSERT INTO `product` VALUES (5, 'OPPO Find X4', 3999.00); INSERT INTO `product` VALUES (6, 'OPPO Find Pro', 6488.00); INSERT INTO `product` VALUES (7, 'vivo X70 Pro+', 5999.00);
初始資料:
select * from product;
結果:
需求一:查詢指定字首的記錄
查詢 產品名稱 為 oppo(即字首為oppo) 的產品資訊
select * from product where product_name like "OPPO%";
結果:
需求二:查詢指定字尾的記錄
查詢產品系列為pro系列的產品,即 產品名稱 字尾為 pro 的產品資訊
select * from product where product_name like "%pro";
結果:
需求二:查詢包含指定內容的記錄
查詢 產品名稱 包含 3 的產品
select * from product where product_name like "%3%";
結果:
除了上述方法,MySQL 也支援正規表示式的匹配,通過使用 REGEXP 操作符來進行正規表示式匹配
// 不區分大小寫的查詢 SELECT field1, field2,....,fieldN FROM table_name WHERE field1 regexp condition; // 區分大小寫的查詢 SELECT field1, field2,....,fieldN FROM table_name WHERE field1 regexp binary condition;
在 REGEXP 操作符中可以使用如下的正則模式:
模式 | 描述 |
---|---|
^ | 匹配輸入字串的開始位置。如果設定了 RegExp 物件的 Multiline 屬性,^ 也匹配 ‘n’ 或 ‘r’ 之後的位置 |
$ | 匹配輸入字串的結束位置。如果設定了RegExp 物件的 Multiline 屬性,$ 也匹配 ‘n’ 或 ‘r’ 之前的位置 |
. | 匹配除 “n” 之外的任何單個字元。要匹配包括 ‘n’ 在內的任何字元,請使用像 ‘[.n]’ 的模式 |
[…] | 字元集合。匹配所包含的任意一個字元。例如, ‘[abc]’ 可以匹配 “plain” 中的 ‘a’ |
[^…] | 負值字元集合。匹配未包含的任意字元。例如, ‘[^abc]’ 可以匹配 “plain” 中的’p’ |
p1|p2|p3 | 匹配 p1 或 p2 或 p3。例如,‘z|food’ 能匹配 “z” 或 “food”。‘(z|f)ood’ 則匹配 “zood” 或 “food” |
* | 匹配前面的子表示式零次或多次。例如,zo* 能匹配 “z” 以及 “zoo”。* 等價於{0,} |
+ | 匹配前面的子表示式一次或多次。例如,‘zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”。+ 等價於 {1,} |
{n} | n 是一個非負整數。匹配確定的 n 次。例如,‘o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的兩個 o |
{n,m} | m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次 |
需求一:查詢指定字首的記錄
查詢 產品名稱 為 oppo(即字首為oppo) 的產品資訊 不區分大小寫
select * from product where product_name regexp "^oppo";
查詢 產品名稱 為 oppo(即字首為oppo) 的產品資訊 區分大小寫
select * from product where product_name regexp binary "^oppo";
結果:
需求二:查詢指定字尾的記錄
查詢產品系列為pro系列的產品,即 產品名稱 字尾為 pro 的產品資訊
select * from product where product_name regexp "pro$";
結果:
需求二:查詢包含指定內容的記錄
查詢 產品名稱 包含 3 的產品
select * from product where product_name regexp "3+";
結果:
上述介紹了兩種模糊匹配的實現方式,like 子句 與 正規表示式
很多場景下會使用 like 來對字串進行匹配,從而實現模糊查詢,但是這些場景往往非常簡單,而正規表示式是一個非常強大的文字檢索過濾工具,適用在很複雜的場景
到此這篇關於Mysql實現模糊查詢(like子句 、正規表示式)的文章就介紹到這了,更多相關Mysql模糊查詢方式內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45