使用单个 LIKE 子句搜索多个模式

Searching multiple patterns with single LIKE clause

我怎样才能达到

SELECT * 
FROM Table_1
WHERE Column_A CONTAINS ("AB" OR "BE" OR "DE");

我有超过 15 个值要放入 contains() 中,因此手工操作会很乏味(我的意思是“A 包含“AB”或 A 包含“BE”等)

感谢任何提示,

试试这个:

SELECT * 
FROM Table_1
WHERE Column_A in ('AB','BE','DE');

这将输出 Table_1 中的所有行,其中 Column_A 具有在 IN CLAUSE 中指定的任何值。所以它基本上可以作为 OR.

注意: 如果您将 'AB' 作为一个整体进行搜索,这将起作用。如果您希望所有行在列值字符串中的任何位置都具有 'AB' 或 'BE',那么您必须像这样使用 like 子句:

SELECT * 
FROM Table_1
WHERE Column_A like '%AB%' OR Column_A like '%BE%' OR Column_A like '%DE%';

Update : 你也可以使用下面的一个,这符合你的目的,你不必写 15-20 次 LIKE 子句。

Create table employee (name varchar(200))
Insert into employee values('ABC')
Insert into employee values('DEF')
Insert into employee values('BCD')
Insert into employee values('EFG')
Insert into employee values('ADC')

SELECT
  distinct name
FROM
  (
    VALUES
      ('%A%'),
      ('%D%')
  ) AS v (pattern)
  CROSS APPLY
  (  -- your query
    SELECT * 
    FROM       employee
    WHERE      name like v.pattern
  ) AS x