首页 > 解决方案 > mySQL - 在一个字段中查找大量关键字的上下文

问题描述

我对这个很失望。

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

Dummydata Dummydata

Dummydata Dummydata 15

Dummydata 124578 KEYWORD

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

Dummydata 124578KEYWORD

或者

Dummydata 124578-KEYWORD

ETC

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

我试过这样

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

在这里它只是重新调整所有内容,就像它已被忽略一样

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

在这里看起来它只是在第一段中搜索

它似乎不起作用:(

你能帮我吗?

标签: mysqlregexmariadbsql-likekeyword

解决方案


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

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

您还可以使用关键字创建表格。然后将 aNOT EXISTS与 an 一起使用RLIKE

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

可以在这里找到一个测试


推荐阅读