选择列等于数组中字符串值之一的行

本文关键字:字符串 于数组 数组 选择 | 更新日期: 2023-09-27 17:54:34

我试图将相关行纳入数据表,我只想要行列值等于其他sql表中的值之一,这是我的代码:

try
{
     sc.Open();
     for (int i = 0; i < queryTokens.Length; i++)
     {
          cmd = new SqlCommand("INSERT INTO QueryIndex (Term) Values ('" + queryTokens[i] + "')", sc);
          cmd.ExecuteNonQuery();
     }
     cmd = new SqlCommand("SELECT * FROM TermsIndex Where Term EXIST (Select Term From QueryIndex)");
     SqlDataAdapter da = neuw SqlDataAdapter(cmd);
     da.Fill(tempTable);
     da.Dispose();
     sc.Close();
}
catch (Exception e)
{
     Console.WriteLine(e.ToString());
}

插入的第一部分很好,我敢肯定,但在第二部分,我希望你们都明白我在做什么,我知道我在这里有语法错误,所以请纠正我,我得到这个异常消息:{"值不能为空。'r'nParameter name: dataTable"} Null exception..

这是我的SQL创建表:
CREATE TABLE [dbo].[TermsIndex]
(
    [ID] VARCHAR(35) NOT NULL,
    [Term] VARCHAR(35)  NOT NULL,
    [Frequency] int NOT NULL,
    [Offset] VARCHAR(MAX) NOT NULL,
)

CREATE TABLE [dbo].[QueryIndex]
(
    [Term] VARCHAR(MAX) NOT NULL,
)

为什么我得到null错误?无论如何,我正在创建一个表,只是为了能够比较它的条目与列从第一个,我已经有了它的字符串数组,任何机会能够比较列值改变字符串(令牌)的数量和返回行结果,如果它等于SQL命令中的字符串之一?或者有更优雅的方式来得到想要的结果吗?

选择列等于数组中字符串值之一的行

我假设您的代码中有DataTable tempTable;。你必须初始化它。

DataTable tempTable = new DataTable();

有几种方法可以执行查询:

SELECT DISTINCT T.* FROM TermsIndex T
INNER JOIN QueryIndex Q ON T.Term = Q.Term;
SELECT T.* FROM TermsIndex T
WHERE T.Term IN (SELECT Q.Term FROM QueryIndex Q);
SELECT T.* FROM TermsIndex T
WHERE EXISTS(SELECT Q.Term FROM QueryIndex Q WHERE Q.Term = T.Term);
SELECT T.* FROM TermsIndex T
WHERE T.Term IN('term1', 'term2', 'term3');

注意:在你发布的代码中没有dataTable