MySql,在带有正则表达式的段落中查找

时间:2014-01-30 08:28:05

标签: mysql regex

抱歉我的英语。

我试图通过此查询使用regexp查找文本:

SELECT * FROM p_posts  where Text REGEXP '[[:<:]]Liberty[[:>:]]'and Text REGEXP '[[:<:]]Rig.*[[:>:]]'and Text REGEXP '[[:<:]]7[[:>:]]'and Text REGEXP '[[:<:]]22[[:>:]]'



一切正常。但现在我需要找到记录,这些单词在一个段落中。例如,如果单词Liberty和数字22不在一个段落中,则该记录无效。

请帮忙。
谢谢。

1 个答案:

答案 0 :(得分:1)

这对于MySQL正则表达式来说很棘手,因为你既没有外观也没有非贪婪的匹配。

我建议您根据段落分隔符拆分字符串,然后在段落字符串中搜索匹配项。一个示例拆分函数取自 here

CREATE FUNCTION SPLIT_STR(
  x VARCHAR(255),
  delim VARCHAR(12),
  pos INT
)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
       LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
       delim, '');