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

标签 mysql regex

对不起我的英语。

我正在尝试使用正则表达式通过此查询查找文本:

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/

相关文章:

php - 按时间自动执行 php 和 mySQL 查询

mysql - 如何生成没有外键的ER图(MySQL)?

mysql - 使用 mysql :query 为 erlang 使用 mysql-otp 驱动程序插入多行

python - 如何 GREP 单词,而不是包含特定字符的行,并打印整个单词

java - 如何将(字面意思) "\C"作为回归?

javascript - 正则表达式从下面的字符串捕获日期

mysql - 在 where 子句上查找空值时查询不起作用

mysql - SQL请求优化

python - 解析 ping 命令输出

c++ - 保存 QNetworkReply