mySQL - 在一个字段中查找大量关键字的上下文

标签 mysql regex mariadb sql-like keyword

我对这个感到失望。

我的 Maria MySql 数据库中有一个字段包含如下数据:

Dummydata Dummydata

Dummydata Dummydata 15

Dummydata 124578 KEYWORD

它也可以在最后一行看起来像这样:

Dummydata 124578KEYWORD

Dummydata 124578-KEYWORD

等等

现在我有大约 3000 个关键字的列表,需要在我的结果中排除这些关键字,这基本上是我唯一的标准。

我试过这样

AND NOT (FIELD LIKE '%KEYWORD1%' OR FIELD  LIKE '%KEYWORD2%')

这里它只是重新调整一切,就像它被忽略了一样

AND NOT (FIELD IN ('%KEYWORD1%','%KEYWORD2%')')

这里好像只搜索了第一段

它似乎不起作用:(

你能帮忙吗?

最佳答案

对于少数几个关键字,您可以使用 NOT REGEXP/NOT RLIKE

AND FIELD NOT RLIKE '[0-9]+[ -]?(keyword1|keyword2|keyword3)'

您还可以使用关键字创建表格。然后使用 NOT EXISTSRLIKE

AND NOT EXISTS
(
   SELECT 1
   FROM wordstoavoid w
   WHERE t.FIELD RLIKE CONCAT('[0-9]+[ -]?', w.word)
);

可以查到一个测试here

关于mySQL - 在一个字段中查找大量关键字的上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52355971/

相关文章:

mysql - 将 INNER JOIN 和 LEFT JOIN 与日期选择结合起来

mysql - 使用 MySQL VARCHAR 时非英语字符更重要?

javascript - 正好有 3 个字符和 10 个数字的 13 个字符字母数字字符串的正则表达式

javascript - 正则表达式适用于浏览器但不适用于 Node.js

mariadb - 允许 MariaDB 10.3 中的特定用户进行外部访问

debian - 在 debian jessie 上安装 libmariadbclient-dev

mysql - 选择具有一对值的所有条目计数的最近行

php - 在 Laravel 4 模型上使用 setConnection

r - 基于 R 中的字符串模式更新字符变量

mysql - mariadb 在线删除索引不起作用