sql - SQL Server,使用或语句条件
问题描述
我正在使用一个查询,它在一个表中搜索两个条件。我举个例子:
Select *
from Customers
where mobile= '" + textboxt1.Text + "' or Phone = '" + textboxt1.Text + "'
该查询返回给我的第一行 mobile 或 phone numbers 与 my 相等textbox1.Text
。
我需要设置一个条件:开始查找“整个表”以查找第一个“或”语句(移动)。如果不存在任何结果,则使用第二个或条件(电话)再次搜索整个表。
有什么简单的方法可以编写我的查询吗?或者我需要为此使用案例吗?
解决方案
假设表中匹配的记录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
)。
推荐阅读
- inno-setup - 如何在 Inno Setup 中仅将三部分文件版本(没有第四个修订号)包含到 AppVersion 值中
- php - 如果未选中选择选项,请将其从数据库中删除 - 引导多选
- sql - 从存储过程生成嵌套 JSON
- discord.py - Discord Bot 不能踢/禁止成员
- azure - 创建运行单元测试文件夹的天蓝色构建定义
- c++ - 使用 setrlimit 设置堆栈大小因 gcc 失败
- xpath - 基于另一个元素值的 Xpath
- javascript - React 和 Redux:Onclick 删除按钮返回未定义
- javafx - 显示奇怪字符的场景生成器编辑器
- graphql - 如何使用 Dgraph GraphQL API 正确附加到数组?