SQL从表中选择列包含特定字符串

时间:2014-04-29 07:09:57

标签: sql sql-server aggregate-functions

我有一个表格,其中包含需要搜索的字符串[如下图所示]

search table TableA

之后,我有一个存储数据的表[如下图]

enter image description here TableB

只有当记录包含TableA中的字符串时,搜索功能才会从TableB中选择[即预期结果应如下图(表C)]

enter image description here TableC

我尝试过使用下面的SQL,但SQL在尝试运行[Incorrect syntax near 'select']时遇到了一些错误,同样,SQL也有点复杂,有没有办法让SQL更简单? / p>

select * from TableB a 
where exists 
    (select colA from TableB b 
        where b.colA = a.ColA and Contains (b.ColA, select searchCol from TableA))

3 个答案:

答案 0 :(得分:4)

请尝试:

select 
  a.* 
From tblA a inner join tblB b 
    on b.Col like '%'+a.Col+'%'

SQL Fiddle Demo

答案 1 :(得分:2)

其中一个应该按照我的方式工作

SELECT b.colA 
FROM TableB b join TableA a
WHERE colA like '%' + a.ColA + '%';


SELECT b.colA
FROM TableB b join TableA a
WHERE INSTR(b.colA, '{' + a.colA + '}') > 0;

答案 2 :(得分:-1)

SELECT b.* FROM tblA a,tblB b
WHERE PATINDEX('%'+a.Col+'%',b.Col)>0

SQL FIDDLE DEMO

我搜索了PATINDEX和LIKE之间的性能差异但没有得到确定的答案,有人说当不能使用索引时PATINDEX会更快,这时候搜索的模式被包含在通配符中,例如'%'+ a .Col +'%'虽然其他帖子提到他们可以类似的表现。

也许某些SO SQL向导可以看到水晶球并向我们展示光线