SQL - 如果一个表的列中的字符串包含来自连接表

时间:2016-02-29 18:02:52

标签: sql sql-server

我有两个表A和B.表A有列ID,名称和值。在表B的其他列中,有一个名为IssueID的列。 A.Value的值类似于'ForSymbol12345',而B.IssueID的值类似'12345'。我能够在相应表中的某些ID列上连接这两个表。但是,我只想选择B.IssueID存在于A.Value值中的那些行。换句话说,B.IssueID是A.Value的子字符串。

可以在SQL中完成吗?我尝试使用CONTAINS(字符串,'值搜索')但显然第二个参数必须是字符串,不能是列名。我试过像

CONTAINS(A.Value, B.IssueID)

但是它给出了一个错误,说第二个参数应该是String,TEXT_LEX或Variable(一个简化的例子显示如下)

enter link description here

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:6)

LIKE运算符与JOIN

一起使用
SELECT A.*, B.*
FROM A
INNER JOIN B
ON A.Value LIKE CONCAT('%', B.IssueID, '%') 

答案 1 :(得分:2)

<33>下面提到的evil333的CONCAT选项可能有效,但我使用的是SSMS 2008,并且在SSMS 2012中引入了CONCAT。所以,我在这里找到了解决方法

https://stackoverflow.com/a/21702750/3482656

您可以执行类似

的操作
A.value like '%' + cast(B.IssueID as varchar) + '%'

我希望这会有所帮助。