包含大量值的SQL查询IN子句



我必须运行一个简单的查询,如select * from table_a where col1 in (val1,val2, ..., valn),具有非常大量的值,数量级为数万。这些值是从日志中提取的,可以是任何字母数字字符串,例如001034abz10t

在SQL Server Management Studio中,我可以复制粘贴到查询字符串中的值的数量是有限的,因此我必须将原始值集分解为较小的集,并使用每个集运行查询。

是否有一种方法可以做到只有一个查询无论是在SSMS或从命令行使用sqlcmd或任何其他工具?对于SQLCMD,可以通过-v参数传递给脚本的变量的长度有限制。将有一个变量将val1, val2,...valn的所有值表示为单个字符串。

我也必须在DB2和Oracle上运行类似的查询,所以任何关于交互或从命令行进行查询的信息将非常感谢!

yes

  1. 创建一个表并把你的值放在那里

  2. 然后使用:

    select * from table_a where col1 in ( select val from newtablename)
    

最新更新