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

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

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

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

有時(shí)候我們需要獲取某字段含有 “xxxxx” 字符的所有記錄,這時(shí)就是模糊查詢,下面介紹一下在MySQL中實(shí)現(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 命令可以讀取一條或者多條記錄,一個(gè)字段信息或者多個(gè)字段信息,可使用星號(*)來代替其他字段返回表的所有字段數(shù)據(jù)
  • SELECT 命令 from 后可以使用一個(gè) / 多個(gè)表,表之間使用逗號( , ) 分割
  • SELECT 命令 使用 WHERE 語句來包含任何條件
  • SELECT 命令 使用 LIMIT 屬性來設(shè)定返回的記錄數(shù)。
  • SELECT 命令 使用 OFFSET指定SELECT語句開始查詢的數(shù)據(jù)偏移量。默認(rèn)情況下偏移量為0。

like子句

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

語法

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

說明:

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

示例

前提準(zhǔn)備:創(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)品價(jià)格',
  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片描述

正則表達(dá)式

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

語法

// 不區(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ù),需要為正則表達(dá)式
  • 默認(rèn) regexp 操作符 的查詢不區(qū)分大小寫,如若想?yún)^(qū)分大小寫,可以在 regexp 操作符后 加上 binary 關(guān)鍵字即可

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

模式描述
^匹配輸入字符串的開始位置。如果設(shè)置了 RegExp 對象的 Multiline 屬性,^ 也匹配 ‘\n’ 或 ‘\r’ 之后的位置
$匹配輸入字符串的結(jié)束位置。如果設(shè)置了RegExp 對象的 Multiline 屬性,$ 也匹配 ‘\n’ 或 ‘\r’ 之前的位置
.匹配除 “\n” 之外的任何單個(gè)字符。要匹配包括 ‘\n’ 在內(nèi)的任何字符,請使用像 ‘[.\n]’ 的模式
[…]字符集合。匹配所包含的任意一個(gè)字符。例如, ‘[abc]’ 可以匹配 “plain” 中的 ‘a’
[^…]負(fù)值字符集合。匹配未包含的任意字符。例如, ‘[^abc]’ 可以匹配 “plain” 中的’p’
p1|p2|p3匹配 p1 或 p2 或 p3。例如,‘z|food’ 能匹配 “z” 或 “food”。‘(z|f)ood’ 則匹配 “zood” 或 “food”
*匹配前面的子表達(dá)式零次或多次。例如,zo* 能匹配 “z” 以及 “zoo”。* 等價(jià)于{0,}
+匹配前面的子表達(dá)式一次或多次。例如,‘zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”。+ 等價(jià)于 {1,}
{n}n 是一個(gè)非負(fù)整數(shù)。匹配確定的 n 次。例如,‘o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的兩個(gè) o
{n,m}m 和 n 均為非負(fù)整數(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é)

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

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

到此這篇關(guān)于Mysql實(shí)現(xiàn)模糊查詢(like子句 、正則表達(dá)式)的文章就介紹到這了,更多相關(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會在查詢上設(shè)置一個(gè)標(biāo)記,執(zhí)行查詢會返回執(zhí)行計(jì)劃的信息,而不是執(zhí)行這條SQL,需要的朋友可以參考下
    2023-05-05
  • JDBC連接MySQL5.7的方法

    JDBC連接MySQL5.7的方法

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

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

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

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

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

    centos7利用yum安裝mysql 8.0.12

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

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

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

    MySQL文本文件導(dǎo)入及批處理模式應(yīng)用說明

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

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

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

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

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

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

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

最新評論

台东市| 普兰店市| 阿城市| 双辽市| 丰宁| 德清县| 巴彦淖尔市| 喀喇| 南和县| 老河口市| 麦盖提县| 苏尼特左旗| 台江县| 石嘴山市| 郑州市| 通化市| 彭州市| 海林市| 临澧县| 海盐县| 垦利县| 余庆县| 利辛县| 上杭县| 泾阳县| 沂水县| 安康市| 武山县| 牙克石市| 南昌市| 靖宇县| 河北区| 西充县| 固原市| 汕尾市| 理塘县| 葵青区| 承德县| 扎鲁特旗| 长子县| 中阳县|