有没有一种使用 AND 子句使用 LIKE 运算符查找多个匹配项的简便方法?
我应该动态地做,使用可变数量的术语。静态地获取它(使用固定数量的术语)是很容易的:
SELECT *
from MyTable
WHERE MyColumn LIKE "%AAA%"
AND MyColumn LIKE "%BBB%"
AND MyColumn LIKE "%CCC%"
假设有一个包含未知数量术语的表变量:
DECLARE @Terms table
(
Term nvarchar(500)
)
有没有办法在 MyColumn 上执行 LIKE 语句来匹配@Terms 中的所有项目?
最佳答案
DECLARE @Terms TABLE
(
WildCards VARCHAR(20)
)
INSERT INTO @Terms
( WildCards )
VALUES
( 'CO' ),
( 'DO' ),
( 'EO' )
DECLARE @FoundAll INT
SELECT @FoundAll = Count(*) FROM @Terms
SELECT mt.MyColumn, COUNT(*), @FoundAll FROM MyTable mt
OUTER APPLY
(
SELECT WildCards FROM @Terms
) d
WHERE mt.MyColumn LIKE ('%' + d.WildCards + '%')
GROUP BY mt.MyColumn
HAVING COUNT(*) = @FoundAll
这只会拉取匹配所有可能喜欢的记录。
关于sql-server - T-SQL 中具有可变数量搜索条件的 LIKE 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24510649/