最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql實現(xiàn)模糊查詢的兩種方式(like子句?、正則表達式)

 更新時間:2022年09月30日 09:34:21   作者:pan_mlpan  
通配符是一種特殊語句,主要用來模糊查詢,下面這篇文章主要給大家介紹了關(guān)于給Mysql實現(xiàn)模糊查詢的兩種方式,分別是like子句?、正則表達式,需要的朋友可以參考下

通常在實際應用中,會涉及到模糊查詢的需求,查詢在 MySQL 中使用 SQL SELECT 命令來讀取數(shù)據(jù),有條件的查詢可以在 SELECT 語句中使用 WHERE 子句來獲取記錄

有時候我們需要獲取某字段含有 “xxxxx” 字符的所有記錄,這時就是模糊查詢,下面介紹一下在MySQL中實現(xiàn)模糊查詢的兩種方式

前言

MySQL 查詢數(shù)據(jù)使用SQL SELECT語句

語法

MySQL數(shù)據(jù)庫中查詢數(shù)據(jù)通用的 SELECT 語法:

SELECT column_name, column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]

說明:

  • SELECT 命令可以讀取一條或者多條記錄,一個字段信息或者多個字段信息,可使用星號(*)來代替其他字段返回表的所有字段數(shù)據(jù)
  • SELECT 命令 from 后可以使用一個 / 多個表,表之間使用逗號( , ) 分割
  • SELECT 命令 使用 WHERE 語句來包含任何條件
  • SELECT 命令 使用 LIMIT 屬性來設定返回的記錄數(shù)。
  • SELECT 命令 使用 OFFSET指定SELECT語句開始查詢的數(shù)據(jù)偏移量。默認情況下偏移量為0。

like子句

根據(jù)上述的語法,模糊查詢的限制位置在 where 語句后,即like 在 where 中使用

語法

SELECT field1, field2,....,fieldN 
FROM table_name
WHERE field1 LIKE condition;

說明:

  • LIKE子句 在 WHERE 子句中使用,若 condition 為明確的數(shù)據(jù),則 LIKE子句 相當于 等號 =(精準查詢)
  • 通常,condition 會包含 % ,即 LIKE 通常與 % 一同使用,進行搜索(模糊查詢), xxx% 查找指定前綴的記錄,%xxx 查找指定后綴的記錄,%xxx% 查找包含指定內(nèi)容的記錄

示例

前提準備:創(chuàng)建表與插入數(shù)據(jù)

-- ----------------------------
-- 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 '產(chǎn)品名稱',
  `price` decimal(10, 2) UNSIGNED NOT NULL COMMENT '產(chǎn)品價格',
  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);

初始數(shù)據(jù):

select * from product;

結(jié)果:

請?zhí)砑訄D片描述

需求一:查詢指定前綴的記錄

查詢 產(chǎn)品名稱oppo(即前綴為oppo) 的產(chǎn)品信息

select * from product where product_name like "OPPO%";

結(jié)果:

請?zhí)砑訄D片描述

需求二:查詢指定后綴的記錄

查詢產(chǎn)品系列為pro系列的產(chǎn)品,即 產(chǎn)品名稱 后綴為 pro 的產(chǎn)品信息

select * from product where product_name like "%pro";

結(jié)果:

請?zhí)砑訄D片描述

需求二:查詢包含指定內(nèi)容的記錄

查詢 產(chǎn)品名稱 包含 3 的產(chǎn)品

select * from product where product_name like "%3%";

結(jié)果:

請?zhí)砑訄D片描述

正則表達式

除了上述方法,MySQL 也支持正則表達式的匹配,通過使用 REGEXP 操作符來進行正則表達式匹配

語法

// 不區(qū)分大小寫的查詢
SELECT field1, field2,....,fieldN 
FROM table_name
WHERE field1 regexp condition;

// 區(qū)分大小寫的查詢
SELECT field1, field2,....,fieldN 
FROM table_name
WHERE field1 regexp binary condition;

說明:

  • regexp 操作符也在 WHERE 子句中使用,若 condition 不能為明確的數(shù)據(jù),需要為正則表達式
  • 默認 regexp 操作符 的查詢不區(qū)分大小寫,如若想?yún)^(qū)分大小寫,可以在 regexp 操作符后 加上 binary 關(guān)鍵字即可

在 REGEXP 操作符中可以使用如下的正則模式:

模式描述
^匹配輸入字符串的開始位置。如果設置了 RegExp 對象的 Multiline 屬性,^ 也匹配 ‘\n’ 或 ‘\r’ 之后的位置
$匹配輸入字符串的結(jié)束位置。如果設置了RegExp 對象的 Multiline 屬性,$ 也匹配 ‘\n’ 或 ‘\r’ 之前的位置
.匹配除 “\n” 之外的任何單個字符。要匹配包括 ‘\n’ 在內(nèi)的任何字符,請使用像 ‘[.\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 是一個非負整數(shù)。匹配確定的 n 次。例如,‘o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的兩個 o
{n,m}m 和 n 均為非負整數(shù),其中n <= m。最少匹配 n 次且最多匹配 m 次

示例

需求一:查詢指定前綴的記錄

查詢 產(chǎn)品名稱oppo(即前綴為oppo) 的產(chǎn)品信息 不區(qū)分大小寫

select * from product where product_name regexp  "^oppo";

查詢 產(chǎn)品名稱oppo(即前綴為oppo) 的產(chǎn)品信息 區(qū)分大小寫

select * from product where product_name regexp binary "^oppo";

結(jié)果:

請?zhí)砑訄D片描述

需求二:查詢指定后綴的記錄

查詢產(chǎn)品系列為pro系列的產(chǎn)品,即 產(chǎn)品名稱 后綴為 pro 的產(chǎn)品信息

select * from product where product_name regexp "pro$";

結(jié)果:

請?zhí)砑訄D片描述

需求二:查詢包含指定內(nèi)容的記錄

查詢 產(chǎn)品名稱 包含 3 的產(chǎn)品

select * from product where product_name regexp "3+";

結(jié)果:

請?zhí)砑訄D片描述

總結(jié)

上述介紹了兩種模糊匹配的實現(xiàn)方式,like 子句 與 正則表達式

很多場景下會使用 like 來對字符串進行匹配,從而實現(xiàn)模糊查詢,但是這些場景往往非常簡單,而正則表達式是一個非常強大的文本檢索過濾工具,適用在很復雜的場景

到此這篇關(guān)于Mysql實現(xiàn)模糊查詢(like子句 、正則表達式)的文章就介紹到這了,更多相關(guān)Mysql模糊查詢方式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于MySQL中explain工具的使用

    關(guān)于MySQL中explain工具的使用

    這篇文章主要介紹了關(guān)于MySQL中explain工具的使用,在select語句之前增加explain關(guān)鍵字,MySQL會在查詢上設置一個標記,執(zhí)行查詢會返回執(zhí)行計劃的信息,而不是執(zhí)行這條SQL,需要的朋友可以參考下
    2023-05-05
  • JDBC連接MySQL5.7的方法

    JDBC連接MySQL5.7的方法

    這篇文章主要介紹了JDBC連接MySQL5.7的方法,需要的朋友可以參考下
    2018-05-05
  • 一文詳解Mysql?insert也會發(fā)生死鎖嗎

    一文詳解Mysql?insert也會發(fā)生死鎖嗎

    死鎖的本質(zhì)是資源競爭,批量插入如果順序不一致很容易導致死鎖,這篇文章主要給大家介紹了關(guān)于Mysql?insert是否也會發(fā)生死鎖的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-02-02
  • MySQL表鎖、行鎖、排它鎖及共享鎖的使用詳解

    MySQL表鎖、行鎖、排它鎖及共享鎖的使用詳解

    隨著應用對事務完整性和并發(fā)性要求的不斷提高,MySQL才開始開發(fā)基于事務的存儲引擎,下面這篇文章主要給大家介紹了關(guān)于MySQL表鎖、行鎖、排它鎖及共享鎖使用的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • centos7利用yum安裝mysql 8.0.12

    centos7利用yum安裝mysql 8.0.12

    這篇文章主要為大家詳細介紹了centos7利用yum安裝mysql 8.0.12,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • mysql實現(xiàn)自增序列的示例代碼

    mysql實現(xiàn)自增序列的示例代碼

    這篇文章主要介紹了mysql實現(xiàn)自增序列的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • MySQL文本文件導入及批處理模式應用說明

    MySQL文本文件導入及批處理模式應用說明

    MySQL文本文件導入及批處理模式應用說明,需要的朋友可以參考下。
    2011-09-09
  • SQL Server 數(shù)據(jù)庫的備份詳細介紹及注意事項

    SQL Server 數(shù)據(jù)庫的備份詳細介紹及注意事項

    這篇文章主要介紹了SQL Server 備份詳細介紹及注意事項的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • mysql實現(xiàn)merge into問題

    mysql實現(xiàn)merge into問題

    文章介紹了在數(shù)據(jù)庫操作中,如何使用`REPLACE INTO`和`INSERT INTO ON DUPLICATE KEY UPDATE`語句進行數(shù)據(jù)更新和插入操作,如果不想創(chuàng)建唯一性索引,可以通過存儲過程實現(xiàn),文章通過實驗和驗證,展示了這兩種方法的實際效果
    2024-12-12
  • MySQL存儲數(shù)據(jù)亂碼的問題解析

    MySQL存儲數(shù)據(jù)亂碼的問題解析

    這篇文章主要介紹了MySQL存儲數(shù)據(jù)亂碼的問題解析,作者從實際使用中的多個方面定位其原因然后解決,需要的朋友可以參考下
    2015-05-05

最新評論

东光县| 灵山县| 腾冲县| 建瓯市| 田东县| 斗六市| 彩票| 赤城县| 黑龙江省| 永康市| 太湖县| 达州市| 深圳市| 永胜县| 湄潭县| 揭东县| 都匀市| 闽清县| 高雄市| 德安县| 辽阳县| 黄平县| 万荣县| 沙坪坝区| 云霄县| 图木舒克市| 平陆县| 桑植县| 诸暨市| 咸宁市| 唐海县| 翁源县| 蒙自县| 四平市| 界首市| 浦城县| 宁陵县| 贵南县| 商洛市| 潞西市| 杭锦旗|