欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

前言

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

語(yǔ)法

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

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

說(shuō)明:

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

like子句

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

語(yǔ)法

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

說(shuō)明:

  • LIKE子句 在 WHERE 子句中使用,若 condition 為明確的數(shù)據(jù),則 LIKE子句 相當(dāng)于 等號(hào) =(精準(zhǔn)查詢)
  • 通常,condition 會(huì)包含 % ,即 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é)果:

請(qǐng)?zhí)砑訄D片描述

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

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

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

結(jié)果:

請(qǐng)?zhí)砑訄D片描述

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

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

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

結(jié)果:

請(qǐng)?zhí)砑訄D片描述

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

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

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

結(jié)果:

請(qǐng)?zhí)砑訄D片描述

正則表達(dá)式

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

語(yǔ)法

// 不區(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;

說(shuō)明:

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

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

模式描述
^匹配輸入字符串的開(kāi)始位置。如果設(shè)置了 RegExp 對(duì)象的 Multiline 屬性,^ 也匹配 ‘\n’ 或 ‘\r’ 之后的位置
$匹配輸入字符串的結(jié)束位置。如果設(shè)置了RegExp 對(duì)象的 Multiline 屬性,$ 也匹配 ‘\n’ 或 ‘\r’ 之前的位置
.匹配除 “\n” 之外的任何單個(gè)字符。要匹配包括 ‘\n’ 在內(nèi)的任何字符,請(qǐng)使用像 ‘[.\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é)果:

請(qǐng)?zhí)砑訄D片描述

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

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

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

結(jié)果:

請(qǐng)?zhí)砑訄D片描述

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

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

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

結(jié)果:

請(qǐng)?zhí)砑訄D片描述

總結(jié)

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

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

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

  • winxp 安裝MYSQL 出現(xiàn)Error 1045 access denied 的解決方法

    winxp 安裝MYSQL 出現(xiàn)Error 1045 access denied 的解決方法

    自己遇到了這個(gè)問(wèn)題,也找了很久才解決,就整理一下,希望對(duì)大家有幫助!
    2010-07-07
  • linux 下配置安裝mysql以及配置【經(jīng)驗(yàn)】

    linux 下配置安裝mysql以及配置【經(jīng)驗(yàn)】

    這篇文章主要介紹了linux 下配置安裝mysql以及配置【經(jīng)驗(yàn)】,需要的朋友可以參考下
    2016-05-05
  • SQL左連接和右連接原理及實(shí)例解析

    SQL左連接和右連接原理及實(shí)例解析

    這篇文章主要介紹了SQL左連接和右連接原理及實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • MySQL8.0修改Root密碼的方法步驟

    MySQL8.0修改Root密碼的方法步驟

    MySQL在初次安裝之后默認(rèn)設(shè)置了root用戶的密碼,對(duì)于一些情況下需要修改root用戶密碼的操作,本文主要介紹了MySQL8.0修改Root密碼的方法步驟,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04
  • Mysql8斷電崩潰解決

    Mysql8斷電崩潰解決

    本文主要介紹了Mysql8斷電崩潰解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Mysql 5.7 服務(wù)下載安裝圖文教程(經(jīng)典版)

    Mysql 5.7 服務(wù)下載安裝圖文教程(經(jīng)典版)

    MySQL 5.7在諸多方面都進(jìn)行了大幅的改進(jìn),主要在于安全性、靈活性、易用性、可用性和性能等幾個(gè)方面。這篇文章主要介紹了Mysql5.7服務(wù)下載安裝圖文教程(經(jīng)典版),需要的朋友可以參考下
    2016-09-09
  • MYSQL數(shù)據(jù)庫(kù)基礎(chǔ)之Join操作原理

    MYSQL數(shù)據(jù)庫(kù)基礎(chǔ)之Join操作原理

    這篇文章主要給大家介紹了關(guān)于MYSQL數(shù)據(jù)庫(kù)基礎(chǔ)之Join操作原理的相關(guān)資料,連接(join)查詢是將兩個(gè)查詢的結(jié)果以“橫向?qū)印钡姆绞胶喜⑵饋?lái)的結(jié)果,需要的朋友可以參考下
    2021-07-07
  • mysql 5.7.21 安裝配置方法圖文教程(window)

    mysql 5.7.21 安裝配置方法圖文教程(window)

    這篇文章主要為大家詳細(xì)介紹了window環(huán)境下mysql5.7.21安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 關(guān)于MySQL 大批量插入時(shí)如何過(guò)濾掉重復(fù)數(shù)據(jù)

    關(guān)于MySQL 大批量插入時(shí)如何過(guò)濾掉重復(fù)數(shù)據(jù)

    這篇文章主要介紹關(guān)于MySQL 大批量插入時(shí)如何過(guò)濾重復(fù)數(shù)據(jù),比如線上庫(kù)有6個(gè)表存在重復(fù)數(shù)據(jù),其中2個(gè)表比較大,96萬(wàn)+和30萬(wàn)+,因?yàn)橹疤幚磉^(guò)相同的問(wèn)題,就直接拿來(lái)了上次的Python去重腳本,腳本很簡(jiǎn)單,就是連接數(shù)據(jù)庫(kù),查出來(lái)重復(fù)數(shù)據(jù),循環(huán)刪除,需要的朋友可以參考下
    2021-09-09
  • 最新評(píng)論