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

MySQL中使用正則表達式詳情

 更新時間:2021年11月20日 15:34:40   作者:李子捌  
這牌你文章主要給大家分享的是MySQL中使用正則表達式詳情,MySQL中支持正則表達式匹配,在復雜的過濾條件中,可以考慮使用正則表達式。使用正則表達式需要掌握一些正則表達式的語法和指令,下面來看看文章的詳細內容介紹吧,希望對你有所幫助

1、簡介

MySQL中支持正則表達式匹配,在復雜的過濾條件中,可以考慮使用正則表達式。使用正則表達式需要掌握一些正則表達式的語法和指令,小捌推薦一個學習地址和在線工具,在學習MySQL中使用正則表達式之前,去了解一下正則表達式的語法和指令。

正則表達式學習網(wǎng)址:

www.runoob.com/regexp/rege…

正則表達式在線測試:

c.runoob.com/front-end/8…

值得注意的是,MySQL支持的正則表達式僅僅是正則表達式眾多實現(xiàn)的一個子集,在使用正則表達式之前,建議先測試一下。 測試的時候不一定要先建立表、插入數(shù)據(jù),可以直接使用select省略form子句,以簡便的方式處理表達式,

比如如下方式:

mysql> select '我愛你中國' regexp '我愛你';
+------------------------------+
| '我愛你中國' regexp '我愛你' |
+------------------------------+
|                            1 |
+------------------------------+

mysql> select '12306' regexp '[:digit:]';
+----------------------------+
| '12306' regexp '[:digit:]' |
+----------------------------+
|                          1 |
+----------------------------+

2、準備一張product表

首先準備一張product表,DDL和表數(shù)據(jù)如下所示,可以直接復制使用。

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- 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, 'vivo X70 Pro+', 5999.00);

SET FOREIGN_KEY_CHECKS = 1;

初始數(shù)據(jù)如下所示:

mysql> select * from product;
+----+-------------------------+---------+
| id | product_name            | price   |
+----+-------------------------+---------+
|  1 | Apple iPhone 13 (A2634) | 6799.00 |
|  2 | HUAWEI P50 Pro          | 6488.00 |
|  3 | MIX4                    | 4999.00 |
|  4 | OPPO Find X3            | 3999.00 |
|  5 | vivo X70 Pro+           | 5999.00 |
+----+-------------------------+---------+

2.1 語句順序

正則表達式的作用是文本匹配,使用一個正則表達式與一個文本內容進行比較,可以校驗文本是否符合正則表達式闡述的規(guī)則。在MySQL中,正則表達式用在where子句中,可以對select查詢的數(shù)據(jù)進行過濾。

select * from table_name where regexp '你的正則表達式' order by cloumn_name;

需求:

查詢產品表中,產品名稱中包含3的產品

語句:

mysql> select * from product where product_name regexp '3';

結果:

+----+-------------------------+---------+
| id | product_name            | price   |
+----+-------------------------+---------+
|  1 | Apple iPhone 13 (A2634) | 6799.00 |
|  4 | OPPO Find X3            | 3999.00 |
+----+-------------------------+---------+

2.2 如何區(qū)分大小寫

MySQL使用正則表達式默認不區(qū)分大小寫,但是大部分情況下我們需要明確英文的大小寫進行匹配,這個時候我們可以使用binary關鍵字。

需求:

查詢產品表中,產品名稱包含huawei的產品

語句:

mysql> select * from product where product_name regexp  'huawei';

結果:

+----+----------------+---------+
| id | product_name   | price   |
+----+----------------+---------+
|  2 | HUAWEI P50 Pro | 6488.00 |
+----+----------------+---------+

此時查詢結果默認不區(qū)分大小寫,所以可以直接查詢出來,如果我們希望查詢區(qū)分大小寫,此時只需要在regexp后面加上binary關鍵字即可。

語句:

mysql> select * from product where product_name regexp binary 'huawei';

結果:

Empty set (0.00 sec)

由于product表中并沒有包含小寫huawei的產品,所以返回結果為Empty set

2.3 正則表達式與like的區(qū)別

相信有些小伙伴發(fā)現(xiàn)上面實現(xiàn)的功能,其實用like也能實現(xiàn)。很多場景下我們使用like來對字符串進行匹配,但是這些場景往往非常簡單,而正則表達式是一個非常強大的文本檢索過濾工具,它的所能實現(xiàn)的功能比like操作符強大太多啦。總之like能做的正則表達式都能做,正則表示能做的like基本上做不了(要么非常棘手)。

比如如下需求,使用正則表達式可以輕松實現(xiàn),但是like操作符卻不知道怎么實現(xiàn)了。

需求:

查詢產品表中,產品名稱中v至少出現(xiàn)一次產品信息

語句:

mysql> select * from product where product_name regexp 'v+';

結果:

+----+---------------+---------+
| id | product_name  | price   |
+----+---------------+---------+
|  5 | vivo X70 Pro+ | 5999.00 |
+----+---------------+---------+

注意:正則表達式重復元字符的匹配都是整個連續(xù)出現(xiàn)。下面給出這幾個重復元字符,感覺有些小伙伴會理解錯。

重復元字符

元字符 說明
* 0個或多個匹配,效果與{0,}一致
+ 1個或多個匹配,效果與{1,}一致
? 1個或0匹配,效果與{0,1}一致
{n} 等于n個匹配數(shù)目
{n,} 大于等于n個匹配
{n,m} 大于等于n小于等于m個,m<255

相關文章

  • mysql 的load data infile

    mysql 的load data infile

    前些日子在開發(fā)一個輿情監(jiān)測系統(tǒng),需要在一個操作過程中往數(shù)據(jù)表里插入大量的數(shù)據(jù),為了改變以往生硬地逐條數(shù)據(jù)插入的笨辦法,也為了提高執(zhí)行效率,決定用load data infile來執(zhí)行數(shù)據(jù)插入。
    2009-05-05
  • mysql自聯(lián)去重的一些筆記記錄

    mysql自聯(lián)去重的一些筆記記錄

    這篇文章主要給大家介紹了關于mysql自聯(lián)去重的一些筆記記錄,文中通過示例代碼介紹的非常詳細,對大家學習或者使用mysql具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-06-06
  • MySQL中日期和時間戳互相轉換的函數(shù)和方法

    MySQL中日期和時間戳互相轉換的函數(shù)和方法

    這篇文章主要介紹了MySQL中日期和時間戳互相轉換的函數(shù)和方法,本文分別講解了時間戳轉換成日期的方法和把日期轉換為時間戳的方法,需要的朋友可以參考下
    2015-06-06
  • MySQL和Redis之間的存儲區(qū)別

    MySQL和Redis之間的存儲區(qū)別

    MySQL是一種關系型數(shù)據(jù)庫,而Redis是一種鍵值對存儲數(shù)據(jù)庫,雖然它們都是用來存儲和管理數(shù)據(jù)的,但是它們在很多方面都有不同,本文就給大家詳細介紹一下MySQL和Redis之間的存儲區(qū)別,感興趣的同學可以參考一下
    2023-06-06
  • MySQL覆蓋索引的使用示例

    MySQL覆蓋索引的使用示例

    如果一個索引包含(或覆蓋)所有需要查詢的字段的值,稱為‘覆蓋索引’。這篇文章主要給大家介紹了關于MySQL覆蓋索引的相關資料,需要的朋友可以參考下
    2021-01-01
  • MySQL建表設置默認值/取值范圍的操作代碼

    MySQL建表設置默認值/取值范圍的操作代碼

    這篇文章主要介紹了MySQL建表設置默認值/取值范圍的操作代碼,文中給大家提到了MySQL創(chuàng)建表時字符串的默認值,本文給大家講解的非常詳細,需要的朋友可以參考下
    2022-11-11
  • MySQL需要根據(jù)特定順序排序的實現(xiàn)方法

    MySQL需要根據(jù)特定順序排序的實現(xiàn)方法

    在MySQL中,我們可以通過指定順序排序來在查詢結果中控制數(shù)據(jù)的排列順序,這種排序方式是非常有用的,本文就來介紹一下,感興趣的可以了解一下
    2023-11-11
  • win10下安裝兩個MySQL5.6.35數(shù)據(jù)庫

    win10下安裝兩個MySQL5.6.35數(shù)據(jù)庫

    這篇文章主要為大家詳細介紹了win10下兩個MySQL5.6.35數(shù)據(jù)庫安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • MySql完整卸載的四個步驟詳解

    MySql完整卸載的四個步驟詳解

    有時候MySQL不能完全卸載,這時候必須通過一些途徑刪除掉注冊表和一些殘余的文件,然后才能重新安裝才可以成功,下面這篇文章主要給大家介紹了關于MySql完整卸載的四個步驟,需要的朋友可以參考下
    2022-06-06
  • MySQL Installer 8.0.21安裝教程圖文詳解

    MySQL Installer 8.0.21安裝教程圖文詳解

    這篇文章主要介紹了MySQL Installer 8.0.21安裝教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08

最新評論