SELECT * FROM p_posts where Text REGEXP '[[:<:]]Liberty[[:>:]]'and Text REGEXP '[[:<:]]Rig.*[[:>:]]'and Text REGEXP '[[:<:]]7[[:>:]]'and Text REGEXP '[[:<:]]22[[:>:]]'
一切正常。但现在我需要找到记录,这些单词在一个段落中。例如,如果单词Liberty和数字22不在一个段落中,则该记录无效。
请帮忙。
谢谢。
答案 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, '');