将 SQL LIKE 运算符与 %% 一起使用

2024-01-04

我需要在以下位置创建查询SQL 服务器 http://en.wikipedia.org/wiki/Microsoft_SQL_Server其中搜索条件将包括/排除基于用户输入的表。

假设我有两张桌子,TABLE_A and TABLE_B有柱子KEYCOLUMN_A and COLUMN_A in TABLE_A和列FKCOLUMN_B and COLUMN_B in TABLE_B.

和这样的查询:

SELECT TABLE_A.* FROM TABLE_A, TABLE_B WHERE TABLE_A.KEYCOLUMN_A = TABLE_B.FKCOLUMN_B
AND TABLE_A.COLUMN_A LIKE '%SEARCH%' AND TABLE_B.COLUMN_B LIKE '%SEARCH2%'

现在如果用户不输入SEARCH2,我不需要搜索TABLE_B。但这意味着IF ELSE条款。并且随着查询中“可选”表数量的增加,排列和组合也会增加,并且会有很多IF and ELSE声明。

相反,我决定保留声明原样。因此,如果SEARCH2为空,查询将有效地变为:

SELECT * FROM TABLE_A, TABLE_B WHERE TABLE_A.KEYCOLUMN_A = TABLE_B.FKCOLUMN_B
AND TABLE_A.COLUMN_A LIKE '%SEARCH%' AND TABLE_B.COLUMN_B LIKE '% %'

SQL优化器可以识别吗LIKE %%与消除病症本身一样好吗?


Wrap an OR在“B”表周围,例如:

AND (len(searchString)=0 OR table_b.column_b LIKE "%searchString%" )

这样,如果字符串没有值,则其长度将为零,并且字符串的第一部分OR将被评估,总是返回为真并将方程的该部分返回为有效并使用忽略另一半LIKE clause.

您可以根据需要对任意数量的链接表应用相同的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 SQL LIKE 运算符与 %% 一起使用 的相关文章

  • SSIS-从 Sharepoint 下载 Excel 并将其加载到 SQL 数据库

    我目前遇到的情况是共享点网站上有一个 Excel 文件 我需要将该 Excel 文件加载到数据库中 Excel 文件有多个工作表 我尝试过以下方法 但运气为零 方法 1 我访问 sharepoint 站点并访问 库 选项卡 并选择使用资源管
  • 无法通过 SQL Server Management Studio 连接到 SQL Server Linux Docker 容器

    我对 Linux 操作系统很陌生 所以希望这不是一个愚蠢的问题 软件 Windows 10 专业版适用于 Windows 的 Docker 1 13 0 beta38 9805 SQL Server Management Studio v1
  • 使用输出在合并语句中设置变量

    我有一个合并语句应该始终更新或插入一条记录 我想记住变量中该语句的 ID 它看起来像这样 DECLARE int int MERGE dbo table AS A USING SELECT stringtomatch AS string A
  • SQL Server:删除具有外键约束的行:事务可以覆盖约束吗?

    我有一些添加了外键约束的表 它们与代码生成一起使用 以在生成的存储过程中设置特定的联接 是否可以通过在事务中调用多个删除来覆盖这些约束 特别是 C 中的 TransactionScope 或者绝对需要级联删除吗 不要使用级联删除 这样可能会
  • Scala 中的模式匹配是如何在字节码级别实现的?

    Scala 中的模式匹配是如何在字节码级别实现的 是不是像一系列if x instanceof Foo 构造 还是其他什么 它对性能有何影响 例如 给出以下代码 来自Scala 示例 http www scala lang org docu
  • 将 MS Access 连接到网络上的 SQL Server

    我在 Windows 服务器上安装了 SQL Server Express 我有 10 个人在本地 PC 上安装了 MS Access 2016 假设数据库非常小且简单 连接 SQL Server 最简单的方法是什么 简单的 ODBC 可以
  • 子查询在多项选择时返回超过 1 个值的 SQL 错误

    我想要一个临时表 它将使用 select 语句插入值 但每次我运行查询时 总是出现错误 子查询返回超过 1 个值 当查询跟随 gt 或子查询用作表达式时 不允许这样做 该语句已终止 0 行受影响 这很奇怪 因为代码中似乎没有错误 但如果有的
  • T-SQL - 是否有(免费)方法来比较两个表中的数据?

    I have table a and table b SQL Server 2008 两个表具有完全相同的架构 出于本问题的目的 请考虑table a 我的本地开发表 table b 实时表 我需要创建一个 SQL 脚本 包含UPDATE
  • 执行Insert命令并返回Sql中插入的Id

    我正在 MVC 4 中使用 C 将一些值插入到 SQL 表中 实际上 我想插入值并返回最后插入记录的 ID 我使用以下代码 public class MemberBasicData public int Id get set public
  • 服务器未配置 RPC

    查找我的工作历史 发现以下错误 06 18 2018 00 00 01 MBS Lojas ExportaMR OutrasLojas Error 1 WIN VRT 01 SQL2008 MBS Lojas ExportaMR Outra
  • SQL Server 与 Oracle DBMS_METADATA.GET_DDL 并行吗?

    我正在寻找命令行或脚本化解决方案来从 SQL Server 2005 中为所有数据库对象提取 DDL 表 存储过程 视图 索引 索引 约束等 GUI 工具不感兴趣 优先选择内置工具 因为它最能与 Oracle 的 DBMS METADATA
  • T-SQL:检查电子邮件格式

    我有这样的场景 我需要物理数据库中的数据完整性 例如 我有一个变量 email address VARCHAR 200 我想检查一下值是否为 email address是电子邮件格式 有人知道如何检查 T SQL 中的格式吗 非常感谢 我使
  • SQL Server 查看主键

    有没有办法在 sql server 中为视图提供主键 我知道在oracle中这是可能的 我不关心更新它的只读视图 但其他人正在 ms access 中使用它 所以我希望显示我知道正确的约束 是的 您可以创建一个索引视图 http msdn
  • 从存储过程执行SQL Server代理作业并返回作业结果

    需要有一个存储过程来调用 SQL Server 代理作业并返回作业是否成功运行 到目前为止我已经 CREATE PROCEDURE MonthlyData AS EXEC msdb dbo sp start job N MonthlyDat
  • 为什么需要 EndExecuteNonQuery()?

    文档here http msdn microsoft com en us library ca56w9se aspx指出 开发人员必须致电 EndExecuteNonQuery 方法完成 操作 我无法找到一个充分的理由来解释为什么会这样 或
  • 管理员无法管理 SQL Server 报告服务

    我正在 SQL Server 2008 Standard 上运行 SQL Server Reporting Services 并尝试使网页正常工作 我需要做什么才能获得 RS 报表管理器 报表服务连接 首先将我视为管理员 以便我可以更改我的
  • 是否可以将普通表与临时表进行左外连接?

    我创建 SQL Server 查询并有一个包含记录的普通表 另一方面有一个包含记录的临时表 该表不为空 并且所有字段都没有任何冲突 加入 可以连接这两个不同类型的表吗 SELECT NormalTable Entityname FROM N
  • 表中主键的最佳实践是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在设计表时 我养成了一种习惯 即有一列是唯一的 并且我将其作为主键 根据要求 可以通过三种方式实现 自动递增的标识整数列 唯一标识符 GUID
  • SQL Server 2008 中超前滞后函数的替代

    我想将当前行与下一行中的值进行比较 SQL 有LEAD and LAG函数来获取下一个和上一个值 但我无法使用它们 因为我使用的是 SQL Server 2008 那么我该如何得到这个呢 我有带输出的表 Id ActId StatusId
  • 使用 min(datetime) 了解 SQL Server 行为

    长话短说 这只是我的一个愚蠢的假设 我确信一个专栏是一个日期时间 但它不是 所以不要指望在这个问题中找到任何有趣的东西 把它留在这里 以便民主党得到他的正确接受回答 我写了一个像这样的简单查询 SELECT ID MIN DateMadeA

随机推荐