首页 > 解决方案 > SQL Server,使用或语句条件

问题描述

我正在使用一个查询,它在一个表中搜索两个条件。我举个例子:

Select * 
from Customers 
where mobile= '" + textboxt1.Text + "' or Phone = '" + textboxt1.Text + "' 

该查询返回给我的第一行 mobile 或 phone numbers 与 my 相等textbox1.Text

我需要设置一个条件:开始查找“整个表”以查找第一个“或”语句(移动)。如果不存在任何结果,则使用第二个或条件(电话)再次搜索整个表。

有什么简单的方法可以编写我的查询吗?或者我需要为此使用案例吗?

标签: sqlsql-servertsqlsql-server-2008

解决方案


假设表中匹配的记录mobile不超过一条,匹配的记录不超过一条phone(考虑到您对用例的描述,这似乎相关),您可以使用top 1条件排序:

select top 1 * 
from Customers 
where mobile= @textboxt1 or phone = @textboxt2
order by case when mobile= @textboxt1 then 0 else 1 end

如果一条记录匹配 on mobile,条件排序子句将把它放在首位,并top 1消除(可能的)其他匹配 on 的记录phone。否则,phone将保留(唯一)匹配记录。

注意:不要相信用户输入。始终使用准备好的语句和查询参数。我修改了查询,使其使用参数(@textboxt1@textboxt2)。


推荐阅读