在 SQL 中实现关键字黑名单

发布于 2024-07-15 05:45:06 字数 412 浏览 2 评论 0原文

我有一个关键字(字符串)列表,其中我需要识别与关键字黑名单(单独表中的字符串)的任何匹配,

任何关键字/黑名单匹配都将在位字段中进行标记:Keyword.IsBlacklisted。

有没有一种简单的方法可以在 SQL 中实现这一点?

匹配可能是部分的(即黑名单 = 'sex' 关键字 = '性玩具')

解决方案 - 感谢 Daniel Spiewak

 SELECT Keyword.Keyword FROM Keyword CROSS JOIN BlackList
 WHERE (Keyword.Keyword 
 LIKE { fn CONCAT({ fn CONCAT('%', BlackList.Keyword) }, '%') })

I have a list of keywords (strings) in which I need to identify any matches with a blacklist of keywords (strings in a separate table)

Any keyword/blacklist matches will be flagged in a bit field: Keyword.IsBlacklisted.

Is there an easy way to accomplish this in SQL?

The matches might be partial (i.e. blacklist = 'sex' keyword = 'sex toy')

SOLUTION - Thanks Daniel Spiewak

 SELECT Keyword.Keyword FROM Keyword CROSS JOIN BlackList
 WHERE (Keyword.Keyword 
 LIKE { fn CONCAT({ fn CONCAT('%', BlackList.Keyword) }, '%') })

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

迷雾森÷林ヴ 2024-07-22 05:45:06
SELECT keyword FROM words JOIN blacklist 
               WHERE keyword LIKE CONCAT(CONCAT('%', word), '%')

假设这些单词位于 words 表的 keyword 字段中,并且 blacklistword 中包含其单词场地。 这将毫无效率,但我认为从理论的角度来看这是你能做的最好的事情。

SELECT keyword FROM words JOIN blacklist 
               WHERE keyword LIKE CONCAT(CONCAT('%', word), '%')

Assuming that the words are in the keyword field of the words table and the blacklist contains its words in the word field. This will be anything but efficient, but I think it's the best you can do from a theoretical standpoint.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文