我有一列带有产品说明的列。我想用正则表达式在此列上进行搜索,只从正则表达式返回匹配项,而不是列的全部内容。
即我有一个描述
这颗宏伟的珠子细节丰富
和
手链有磁性封盖
SELECT description FROM products WHERE description RLIKE"'magn.*\s"
这应该返回壮丽和磁性
SELECT description FROM products WHERE description RLIKE"'magni.*\s"
这应该返回壮丽
但是,当然,当前查询返回完整的描述。任何指针我该怎么做。 MYSQL 5.5
答案 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