MySQL从列返回仅模式匹配

时间:2018-07-20 06:35:09

标签: mysql mysql-5.5

我有一列带有产品说明的列。我想用正则表达式在此列上进行搜索,只从正则表达式返回匹配项,而不是列的全部内容。

即我有一个描述

  

这颗宏伟的珠子细节丰富

  

手链有磁性封盖

SELECT description FROM products WHERE description RLIKE"'magn.*\s"

这应该返回壮丽磁性

SELECT description FROM products WHERE description RLIKE"'magni.*\s"

这应该返回壮丽

但是,当然,当前查询返回完整的描述。任何指针我该怎么做。 MYSQL 5.5

2 个答案:

答案 0 :(得分:1)

如果使用的是MySQL 8.0版,则可以为此使用regexp_substr()。此功能在早期版本中不可用。

https://dev.mysql.com/doc/refman/8.0/en/regexp.html#function_regexp-substr

更新

这是另一个问题,应该是5.5友好的。假定提供的正则表达式位于所需匹配项的开头。

SELECT 
SUBSTRING_INDEX(
  SUBSTRING(`description`, LOCATE('magni', `description`)), ' ', 1) 
FROM table1 
WHERE `description` REGEXP 'magni';

还有一个工作版本8.0的示例,用于支持我以前的工作的人

SELECT REGEXP_SUBSTR('Those magnificent men in their flying machines', '[[:space:]]magni[^ ].*[[:space:]]');

答案 1 :(得分:0)

    You can use REGEXP in mySql to solve your problem like:

SELECT description FROM products WHERE description REGEXP 'magn.*'
    The above query will give u result magnificent and magnetic

SELECT description FROM products WHERE description REGEXP 'magni.*'
    The above query will give u result magnificent