Sql 找出设置了较大输入值的列中是否存在值

Sql 找出设置了较大输入值的列中是否存在值,sql,sql-server,Sql,Sql Server,确定表的特定列单元格是否包含给定值之一的最有效(也是最简单)方法是什么 为了给你一些背景,我有一个1000个身份证号码的列表。它们可能作为文件名的一部分存在于表“ProcessedFiles”的“FileName”列中,也可能不存在 基本上,我需要检查这1000个任务中的哪些已经被处理(即它们存在于表中) 我带来的东西似乎很无效: SELECT * FROM ProcessedFiles WHERE FileName LIKE '%54332423%' OR FileName LIKE '%2

确定表的特定列单元格是否包含给定值之一的最有效(也是最简单)方法是什么

为了给你一些背景,我有一个1000个身份证号码的列表。它们可能作为文件名的一部分存在于表“ProcessedFiles”的“FileName”列中,也可能不存在

基本上,我需要检查这1000个任务中的哪些已经被处理(即它们存在于表中)

我带来的东西似乎很无效:

SELECT * FROM ProcessedFiles 
WHERE FileName LIKE '%54332423%'
OR FileName LIKE '%234432%'
OR FileName LIKE '%342342%'
...


谢谢你的帮助

您可以创建一个临时表并在一列中插入所有ID。然后,您可以交叉连接ProcessedFiles表,并检查名称中的id,如下所示:

SELECT pf.* 
FROM ProcessedFiles pf,table t
WHERE pf.FileName like '%'+t.Id+'%'

我测试了上面的代码,它在SQL Server上运行。

文件名中是否有包含数字的一致部分,或者它可能是其中的任何部分?例如,如果数字是
123
,那么文件名的结构是否类似于
XXX-123-YYY.DAT
,或者它是否可能是类似于
AB9812356X.DAT
的任何地方?您使用的是哪种RDBMS?@RuslanVeselov-我使用的是MicrosoftSQLSerwer@Bohemian-我不能肯定,我需要假设它可以是它的任何一部分,无论你做什么,你所做的一切都会很糟糕,所以我就不说了。如果这个数字可以从文件名中提取出来,那么您可以做一些有效的事情。那么完整的SQL是什么样子的,包括所有的insert语句?与OP的查询大致相同。