如果我必须搜索一些数据,我可以使用通配符并使用简单的查询 -
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/