Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将LIKE子句的SQL语法缩短为IN子句_Sql - Fatal编程技术网

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

将LIKE子句的SQL语法缩短为IN子句,sql,Sql,在SQL中, 有没有办法缩短语法 Select * from TableName where ColumnName like '%A%' or ColumnName like '%B' or ColumnName like 'C%' 到 在Where子句中反复使用或写相同的列名是不可行的。不,没有一种方法可以直接将LIKE和in组合在一起 有很多方法可以解决这个问题,比如这个SQLServer示例 Select * from TableName T JOIN (VALUES

在SQL中, 有没有办法缩短语法

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


Where
子句中反复使用
写相同的列名是不可行的。

不,没有一种方法可以直接将LIKE和in组合在一起

有很多方法可以解决这个问题,比如这个SQLServer示例

Select *
from
   TableName T
   JOIN
   (VALUES ('%A%'),('%B'),('C%')) AS X(Expression) ON T.ColumnName LIKE X.Expression
这会将多个或多个搜索条件更改为行和联接

或者可以使用联合将多个查询合并到一个查询中

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

使用全文搜索。我认为你需要重新进行可行性研究。SQL Server引擎说迭代所有这些字符是不可行的,但是。。。(见我之前的评论。)
Select * from TableName
where ColumnName like '%A%'
union
Select * from TableName
where ColumnName like '%B'
union
Select * from TableName
where ColumnName like 'C%'