sql - 是否可以将 WHERE IN 与 LIKE 一起使用?

标签 sql sql-server sql-like

如果我必须搜索一些数据,我可以使用通配符并使用简单的查询 -

SELECT * FROM TABLE WHERE COL1 LIKE '%test_string%'

而且,如果我必须查看许多我可以使用的值 -

SELECT * FROM TABLE WHERE COL1 IN (Select col from AnotherTable)

但是,是否可以同时使用两者。也就是说,查询不仅执行 WHERE IN,还执行类似于 WHERE LIKE?一个不查看一组值而是使用通配符搜索一组值的查询。

如果不清楚,我可以举个例子。让我知道。谢谢。

示例 -

让我们考虑一下 -

另一个表 -

  id  | Col
------|------
  1   |  one
  2   |  two
  3   |  three

表 -

Col   | Col1
------|------
 aa   |  one
 bb   |  two
 cc   |  three
 dd   |  four
 ee   |  one_two
 bb   |  three_two

现在,如果我可以使用

SELECT * FROM TABLE WHERE COL1 IN (Select col from AnotherTable)

这给了我 -

Col   | Col1
------|------
 aa   |  one
 bb   |  two
 cc   |  three

但是如果我需要怎么办 -

Col   | Col1
------|------
 aa   |  one
 bb   |  two
 cc   |  three
 ee   |  one_two
 bb   |  three_two

我想这应该可以帮助您理解我的意思,同时使用 WHERE IN 和 LIKE

最佳答案

SELECT * 
FROM TABLE A
   INNER JOIN AnotherTable B on
     A.COL1 = B.col
WHERE COL1 LIKE '%test_string%'

根据提供的示例代码,试一试。最后的 select 语句按照您的要求显示数据。

create table #AnotherTable
(
    ID int IDENTITY(1,1) not null primary key,
    Col varchar(100)
);

INSERT INTO #AnotherTable(col) values('one')
INSERT INTO #AnotherTable(col) values('two')
INSERT INTO #AnotherTable(col) values('three')

create table #Table
(
    Col varchar(100),
    Col1 varchar(100)
);

INSERT INTO #Table(Col,Col1) values('aa','one')
INSERT INTO #Table(Col,Col1) values('bb','two')
INSERT INTO #Table(Col,Col1) values('cc','three')
INSERT INTO #Table(Col,Col1) values('dd','four')
INSERT INTO #Table(Col,Col1) values('ee','one_two')
INSERT INTO #Table(Col,Col1) values('ff','three_two')

SELECT * FROM #AnotherTable
SELECT * FROM #Table

SELECT * FROM #Table WHERE COL1 IN(Select col from #AnotherTable)


SELECT distinct A.*
FROM #Table A
    INNER JOIN  #AnotherTable B on
        A.col1 LIKE '%'+B.Col+'%'

DROP TABLE #Table
DROP TABLE #AnotherTable

关于sql - 是否可以将 WHERE IN 与 LIKE 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4285928/

相关文章:

sql-server - 适用于 Linux 的 Microsoft SQL Server 2016 (RTM) - 13.0.1601.5 (X64)

sql - T-SQL 中是否有 LIKE 语句的替代方法?

where-clause - Silverstripe sql 调试

MySQL 错误代码 1005,尽管数据类型相同

sql-server - T-SQL 中 *= 和 =* 运算符有何作用?

mysql - 将查询结果中的 id 外键替换为用户名

sql-server - 我需要在查询中加入行(透视)

mysql - 如何在 CodeIgniter 中使用 LIKE 查询?

mysql - 如何通过一条MySQL查询查询夫妻数据?

MySQL 优化器 - 成本规划器不知道 DuplicateWeedout 策略何时创建磁盘表