当前位置: 首页 > 面试题库 >

将LIKE子句的SQL语法缩短为IN子句

陶超
2023-03-14
问题内容

在SQL中,有什么方法可以缩短语法

Select * from TableName
where ColumnName like '%A%' or ColumnName like '%B' or ColumnName like 'C%'

Select * from TableName
where ColumnName in ('%A%','%B','C%')

一次又一次地在Where子句中写入相同的列名是不可行的OR


问题答案:

没有没有办法将LIKE与IN 直接 结合 __

有很多解决方法,例如本例中的SQL Server

Select *
from
   TableName T
   JOIN
   (VALUES ('%A%'),('%B'),('C%')) AS X(Expression) ON T.ColumnName LIKE X.Expression

这会将多个OR搜索条件更改为行和JOIN

或者,您可以使用UNION将多个查询合并为一个

Select * from TableName
where ColumnName like '%A%'
union
Select * from TableName
where ColumnName like '%B'
union
Select * from TableName
where ColumnName like 'C%'


 类似资料:
  • 本章提供了有关如何使用JDBC应用程序从表中选择记录的示例。 这将在从表中选择记录时使用LIKE子句添加其他条件。 在执行以下示例之前,请确保您具备以下示例 - 要执行以下示例,您可以使用实际用户名和密码替换用户名和密码。 您的MySQL或您正在使用的任何数据库已启动并正在运行。 所需的步骤 (Required Steps) 使用JDBC应用程序创建新数据库需要以下步骤 - Import the

  • 问题内容: 我对此情况有疑问。 我在存储过程中有这样的查询: 我的问题是,这容易受到SQL注入的攻击吗?我需要将其更改为以下内容吗?(?) 问题答案: 快速的答案是不。为了易于进行SQL注入,必须使用动态SQL执行。 这 将很容易受到攻击: 这也意味着这两个示例之间没有真正的区别(至少从安全角度而言)。

  • IN 子句 标识出外部数据库中的表,例如dBASE或Paradox数据库,或Microsoft Jet外部数据库,Microsoft Jet数据库引擎能够与之相连。 语法 标识目标表: [SELECT | INSERT] INTO destination IN {path | ["path" "type"] | ["" [type; DATABASE = path]]} 标识数据源表: FROM

  • 问题内容: 我正在编写一个查询,其中我试图在子查询/ CTE中搜索通配符子字符串,并将此逻辑嵌套在我的CASE语句中。例如: 不幸的是,似乎没有办法做到这一点。由于我需要使用LIKE运算符,因此无法同时使用LIKE和IN。我将不得不分别编写每个LIKE语句,这将用于1000多个行。有人推荐更直接的解决方案吗?预先感谢! -编辑:对不起,每条评论有一些澄清。一个更好的例子: 在上表中,我需要在Use

  • 在MariaDB中,当操作需要完全匹配时,子句与语句一起使用来检索数据。它可以与,,和语句一起使用。 它用于模式匹配并返回或。用于比较的模式接受以下通配符: 通配符:匹配字符数(0或更多)。 通配符:匹配单个字符。它匹配其集合中的字符。 语法: 1. 使用%通配符(百分号通配符) 假设我们有一个表,并有以下数据。 现在想要查询那些名字以字母开头的所有学生信息,那么就可以使用条件的通配符来查找所有以

  • 主要内容:语法,实例SQLite 的 LIKE 运算符是用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,LIKE 运算符将返回真(true),也就是 1。这里有两个通配符与 LIKE 运算符一起使用: 百分号 (%) 下划线 (_) 百分号(%)代表零个、一个或多个数字或字符。下划线(_)代表一个单一的数字或字符。这些符号可以被组合使用。 语法 % 和 _ 的基本语法如下: 您可以使用 AND 或 O