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

Dot*_*Bie 6 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)
Run Code Online (Sandbox Code Playgroud)

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

在此输入链接描述

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

Che*_*dur 6

使用LIKE带有的运算符JOIN.

SELECT A.*, B.*
FROM A
INNER JOIN B
ON A.Value LIKE CONCAT('%', B.IssueID, '%') 
Run Code Online (Sandbox Code Playgroud)

  • 第二次编辑是正确的(即您的原始答案是正确的) - 但是,OP表示表连接相应表中的键以及子字符串匹配,因此您的`INNER JOIN`应该在这些(未命名)键上与AND中的`LIKE`或'WHERE`子句中的`LIKE`. (2认同)