我试图创建一个可以过滤表中多个表列的搜索按钮,我有三个单独的代码可以搜索特定表列(LastName,FirstName和DriverID)上的数据:
SqlConnection Con = new SqlConnection();
Con.ConnectionString = "Data Source=PC-PC\\MIKO;
Initial Catalog=Caproj;
Integrated Security=True;";
Con.Open();
string qry = "select LastName from [Driver Table] where LastName=@id";
SqlCommand cmd = new SqlCommand(qry, Con);
cmd.Parameters.AddWithValue("@id", slastname.Text);
cmd.ExecuteNonQuery();
SqlDataAdapter da2 = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da2.Fill(dt);
if (dt.Rows.Count > 0)
{
MessageBox.Show("Valid Input");
}
else
{
MessageBox.Show("Invalid Input");
}
有没有办法可以同时搜索所有内容而无需为每个搜索单独进行过滤?有点像这样:
SELECT LastName, FirstName, DriverID
FROM [Driver Table]
WHERE LastName=@id
AND FirstName=@id
AND DriverID=@id
答案 0 :(得分:1)
我不确定这是否是你需要的。 但是,当3列中存在id时,此查询将返回 1 值。
SELECT
CASE WHEN EXISTS (SELECT * FROM [Driver Table] WHERE LastName = @id)
THEN 1
WHEN EXISTS (SELECT * FROM [Driver Table] WHERE FirstName = @id)
THEN 1
WHEN EXISTS (SELECT * FROM [Driver Table] WHERE DriverID = @id)
THEN 1
ELSE 0
END
答案 1 :(得分:0)
如果我理解正确,请不要or
:
SELECT LastName, FirstName, DriverID
FROM [Driver Table]
WHERE LastName = @id OR
FirstName = @id OR
DriverID = @id;
或者更简单:
SELECT LastName, FirstName, DriverID
FROM [Driver Table]
WHERE @id IN (LastName, FirstName, DriverID);