Welcome to MySQL Workbench:MySQL正则表达式

在MySQL中,正则表达式是一种强大的工具,用于在数据库中执行复杂的搜索和匹配操作。MySQL Workbench是MySQL的官方图形化工具,它提供了对正则表达式的全面支持。
在MySQL Workbench中,你可以使用正则表达式来执行各种操作,如查询、替换、模式匹配等。下面是一些关于如何在MySQL Workbench中使用正则表达式的常见示例:

  1. 查询包含特定模式的字符串:
    你可以使用REGEXP或RLIKE运算符来执行正则表达式查询。以下是一个示例查询,用于查找包含特定模式的字符串:
SELECT * FROM your_table WHERE column_name REGEXP 'pattern';

在上面的查询中,将"your_table"替换为你要查询的表名,"column_name"替换为你要匹配的列名,"pattern"替换为你要匹配的正则表达式模式。
2. 替换字符串中的模式:
你可以使用REGEXP_REPLACE函数来替换字符串中的模式。以下是一个示例:

SELECT REGEXP_REPLACE(column_name, 'pattern', 'replacement') FROM your_table;

在上面的查询中,将"your_table"替换为你要操作的表名,"column_name"替换为你要替换的列名,"pattern"替换为你要匹配的正则表达式模式,"replacement"替换为你要替换为的新字符串。
3. 创建和使用正则表达式函数:
MySQL提供了许多内置的正则表达式函数,你可以在查询中使用它们来执行各种操作。以下是一些常用的正则表达式函数:

  • REGEXP:用于执行正则表达式匹配。
  • RLIKE:用于执行正则表达式匹配,类似于LIKE运算符,但使用正则表达式模式。
  • REGEXP_REPLACE:用于替换字符串中的正则表达式模式。
  • REGEXP_INSTR:返回字符串中正则表达式模式的起始位置。
  • REGEXP_SUBSTR:返回字符串中正则表达式匹配的子串。
  • REGEXP_REPLACE:用于替换字符串中的正则表达式模式。
  • REGEXP_LIKE:用于检查字符串是否匹配正则表达式模式。
    这些函数只是MySQL中可用的正则表达式函数的一部分。你可以根据需要选择适合你需求的函数,并参考MySQL官方文档以了解更多关于它们的详细信息和使用方法。
    总的来说,MySQL Workbench提供了强大的正则表达式支持,使你能够轻松地在数据库中执行复杂的搜索和匹配操作。通过学习和掌握正则表达式的使用,你可以更有效地处理和分析数据,提高数据库管理的效率。4. 创建和使用自定义的正则表达式模式:
    除了使用内置的正则表达式函数,你还可以创建自定义的正则表达式模式,并在查询中使用它们。以下是一个示例:
CREATE REGEXP Pattern 'your_pattern' TO 'replacement';
SELECT REGEXP_REPLACE(column_name, 'your_pattern', 'replacement') FROM your_table;

在上面的示例中,首先创建了一个名为"your_pattern"的自定义正则表达式模式,然后将其用于替换字符串中的模式。你可以根据需要创建和使用任意数量的自定义模式。
5. 使用正则表达式进行数据验证:
正则表达式还可以用于验证数据的有效性。你可以使用REGEXP或RLIKE运算符来检查数据是否符合特定的模式。以下是一个示例:

SELECT * FROM your_table WHERE column_name REGEXP '^[a-zA-Z0-9]+$';

在上面的查询中,使用了正则表达式模式"1+$",它匹配仅包含字母和数字的字符串。通过将该模式应用于"column_name"列,你可以筛选出符合要求的行。
这些是MySQL Workbench中使用正则表达式的常见示例。通过掌握正则表达式的使用,你可以更灵活地处理和分析数据库中的数据,并提高数据库管理的效率。请记住,正则表达式是一种强大的工具,可以执行复杂的搜索和匹配操作,但也需要一些学习和实践才能掌握其用法。
在这里插入图片描述

正则表达式:
MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配。
如果您了解PHP或Perl,那么操作起来就非常简单,因为MySQL的正则表达式匹配与这些脚本的类似。

CREATE TABLE test_NO1(
test_NO1_id INT NOT NULL AUTO_INCREMENT,
test_NO1_title VARCHAR(100) NOT NULL,
test_NO1_author VARCHAR(40) NOT NULL,
test_NO1_date DATE,
PRIMARY KEY ( test_NO1_id )
)ENGINE=InnoDB;

drop table test_no1;


INSERT INTO test_NO1 
    (test_NO1_title, test_NO1_author, test_NO1_date )
    VALUES
    ("programb", "welcome to programb", NOW());
    
    
select * from test_NO1;


INSERT INTO test_NO1 
    (test_NO1_title, test_NO1_author, test_NO1_date )
    VALUES
    ("programb2", "welcome to programb2", NOW());
    
INSERT INTO test_NO1 
    (test_NO1_title, test_NO1_author, test_NO1_date )
    VALUES
    ("programb3", "welcome to programb3", NOW());
    
    

SELECT * from test_NO1  WHERE test_NO1_title='programb2';

SELECT * from test_NO1;

update test_NO1 SET test_NO1_title='programb100' WHERE test_NO1_id=1;

SELECT * from test_NO1 where test_NO1_id=1;

SELECT * from test_NO1;

DELETE FROM test_NO1 WHERE test_NO1_id=1;

SELECT * from test_NO1;

 SELECT * from test_NO1  WHERE test_NO1_title LIKE '%programb2';
 
 INSERT INTO test_NO1 
    (test_NO1_title, test_NO1_author, test_NO1_date )
    VALUES
    ("programb2", "welcome.to.programb2", NOW());
 
 SELECT * from test_NO1  WHERE test_NO1_author LIKE '%programb2';
 
 SELECT * from test_NO1  WHERE test_NO1_author LIKE '%to%';
 
 SELECT * from test_NO1  WHERE test_NO1_author LIKE 'welcome%';
 
 SELECT * from test_NO1;
 
 CREATE TABLE test_NO2(
test_NO1_id INT NOT NULL AUTO_INCREMENT,
test_NO1_title VARCHAR(100) NOT NULL,
test_NO1_author VARCHAR(40) NOT NULL,
test_NO1_date DATE,
PRIMARY KEY ( test_NO1_id )
)ENGINE=InnoDB;

 INSERT INTO test_NO2
    (test_NO1_title, test_NO1_author, test_NO1_date )
    VALUES
    ("programb2", "welcome.to.programb2", NOW());
    
 SELECT * from test_NO2;
 
 SELECT test_NO1_author FROM test_no1
 UNION
 SELECT test_NO1_author FROM test_no2
 ORDER BY test_NO1_author; 
 
  SELECT test_NO1_author FROM test_no1
 UNION all
 SELECT test_NO1_author FROM test_no2
 ORDER BY test_NO1_author; 
 
 
select * from test_no1 order by test_NO1_date asc;

INSERT INTO test_NO1 
    (test_NO1_title, test_NO1_author, test_NO1_date )
    VALUES
    ("programb4", "welcome to programb4", NOW());
    
INSERT INTO test_NO1 
    (test_NO1_title, test_NO1_author, test_NO1_date )
    VALUES
    ("programb5", "welcome to programb5", NOW());
    
select * from test_no1 order by test_NO1_date asc;

select * from test_no1 order by test_NO1_date desc;

select test_NO1_title, count(*) from test_no1 group by test_NO1_title;

select test_NO1_title, sum(test_NO1_id)  from test_no1 group by test_NO1_title;

select test_NO1_title, avg(test_NO1_id)  from test_no1 group by test_NO1_title;

SELECT * from test_NO1;

SELECT * from test_no2;

INSERT INTO test_NO2 
    (test_NO1_title, test_NO1_author, test_NO1_date )
    VALUES
    ("programb4", "welcome to programb4", NOW());
    
INSERT INTO test_NO2 
    (test_NO1_title, test_NO1_author, test_NO1_date )
    VALUES
    ("programb2", "welcome to programb2", NOW());
    
SELECT * from test_no2;

select t1.test_NO1_title, t2.test_NO1_date from test_no1 t1, test_no2 t2 where t1.test_NO1_date=t2.test_NO1_date;

select t1.test_NO1_title, t2.test_NO1_date from test_no1 t1 left join test_no2 t2 on t1.test_NO1_date=t2.test_NO1_date;

select t1.test_NO1_title, t2.test_NO1_date from test_no1 t1 right join test_no2 t2 on t1.test_NO1_date=t2.test_NO1_date;


SELECT * from test_no2;

INSERT INTO test_NO2 
    (test_NO1_title, test_NO1_author, test_NO1_date )
    VALUES
    ("programb2", "welcome", NOW());

SELECT * from test_no2;

select * from test_no2 where test_NO1_author is null;


INSERT INTO test_NO2 
    (test_NO1_title, test_NO1_author )
    VALUES
    ("programb2", "welcome");

INSERT INTO test_NO2 
    (test_NO1_title, test_NO1_author )
    VALUES
    ("programb2", "welcome");

INSERT INTO test_NO2 
    (test_NO1_title, test_NO1_author )
    VALUES
    ("programb2", "welcome");

SELECT * from test_no2;

select * from test_no2 where test_NO1_date is null;

select * from test_no2 where test_NO1_date is not null;

select * from test_no1 where test_NO1_title regexp '^pro';

select * from test_no1 where test_NO1_title regexp '2$';

select * from test_no1 where test_NO1_title regexp 'gra';

select * from test_no1 where test_NO1_title regexp '^[pro]|5$';
select * from test_no1 where test_NO1_title regexp '^pro';

select * from test_no1 where test_NO1_title regexp '2$';

select * from test_no1 where test_NO1_title regexp 'gra';

select * from test_no1 where test_NO1_title regexp '^[pro]|5$';

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


  1. a-zA-Z0-9 ↩︎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bol5261

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值