首页 > 解决方案 > 如何检查字符串是否包含数据库记录?

问题描述

我有一个字符串(一个长文件路径),需要检查该字符串是否包含数据库记录。我怎样才能做到这一点?

简化示例:

string filePath = @"C:\Users\me\folder1\foo\bar\documents\photos\img1.jpg";

我的数据库表是单列记录:

foo
bar
asdf
movies
videos

我想搜索filePath它是否包含数据库中的任何记录(foo、bar 等),并返回这些记录。在我的示例中,filePathcontains fooandbar所以我将返回fooand bar

我真的有成千上万的文件路径要搜索,我的数据库只有大约 100 条数据库记录,但会慢慢变大。

真的迷失了从哪里开始,或者这是否是最好的方法,但我想不出另一种方法来实现这一目标。谢谢!

标签: c#sqldatabasestring

解决方案


一种方法是拆分路径字符串,然后使用 WHERE IN 执行 SELECT 查询,例如

SELECT SomeColumns
FROM MyTable
WHERE ColumnName IN ('string1', 'string2' ...);

但我会采取的方法是在 Apache Lucene 之类的东西中索引所有路径,然后为数据库中的每个术语查询索引以查看它遇到的路径。这是对 Lucene 的一个非常简单的使用,您应该能够轻松地在线找到教程。


推荐阅读