对不起我的英语。
我正在尝试使用正则表达式通过此查询查找文本:
SELECT * FROM p_posts where Text REGEXP '[[:<:]]Liberty[[:>:]]'and Text REGEXP '[[:<:]]Rig.*[[:>:]]'and Text REGEXP '[[:<:]]7[[:>:]]'and Text REGEXP '[[:<:]]22[[:>:]]'
一切正常。但是现在我需要找到记录,这些词在一个段落中。例如,如果单词 Liberty 和数字 22 不在一个段落中,则此记录无效。
请帮忙。
谢谢。
最佳答案
这对于 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, '');
关于MySql,在带有正则表达式的段落中查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21451211/