使用单个 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
我怎样才能达到
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