选择列等于数组中字符串值之一的行
本文关键字:字符串 于数组 数组 选择 | 更新日期: 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
。