Py学习  »  DATABASE

字符串中间的MySQL Regex

charlie • 5 年前 • 1577 次点击  

我希望在字符串中间使用regex匹配来运行SQL查询。

例如,我有一个字符串

Status Changed from Needs Action to Completed

我想搜索列= Status Changed from {REGEX} to Completed

这有可能吗?我不太了解regex,所以我想寻求帮助

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/50073
 
1577 次点击  
文章 [ 1 ]  |  最新文章 5 年前
GMB
Reply   •   1 楼
GMB    5 年前

从你的要求和评论来看 LIKE 接线员应该非常接近你的需要:

SELECT *
FROM mytable
WHERE mycolumn LIKE 'Status Changed from % to Completed'

这将允许任何字符序列作为以前的状态。


否则,如果预先知道可能的状态值列表,则可以使用regexp使筛选更精确:

SELECT *
FROM mytable
WHERE mycolumn REGEXP 'Status Changed from (Needs Action)|(Open) to Completed'

这个 REGEXP operator 检查列中的值是否与给定的正则表达式匹配。管子( | )代表 交替 运算符(至少有一个值必须匹配)。


Demo on DB Fiddle

create table mytable (
  mycolumn varchar(500)
);

insert into mytable values 
    ('Status Changed from Needs Action to Completed'),
    ('Status Changed from Open to Completed'),
    ('Not a relevant record');

查询1

SELECT *
FROM mytable
WHERE mycolumn LIKE 'Status Changed from % to Completed';

| mycolumn                                      |
| --------------------------------------------- |
| Status Changed from Needs Action to Completed |
| Status Changed from Open to Completed         |

问题2

SELECT *
FROM mytable
WHERE mycolumn REGEXP 'Status Changed from (Needs Action)|(Open) to Completed';

| mycolumn                                      |
| --------------------------------------------- |
| Status Changed from Needs Action to Completed |
| Status Changed from Open to Completed         |