部分字符串匹配 SQL - 内部联接

Partial String match SQL - Inner Join

尝试在此处进行部分字符串匹配,但 LIKE 运算符出现问题。我确定它的语法,但我看不到它

SELECT Name
FROM Table1 a
INNER JOIN Table2 b ON a.Name = b.FullName LIKE '%' + a.Name + '%'

我在执行此操作时收到一条错误消息

Msg 156, Level 15, State 1, Line 4
Incorrect syntax near the keyword 'LIKE'.

试试,

SELECT Name
FROM Table1 a
INNER JOIN Table2 b ON b.FullName LIKE '%' + a.Name + '%'

试试这个

SELECT distinct Name, FullName
FROM Table1 a
INNER JOIN Table2 b ON (b.FullName LIKE '%' + a.Name + '%' OR a.Name like '%'+b.FullName+'%')

你是说这就是你想要的

DECLARE @Tablle1 TABLE(id int identity(1,1),Name varchar(20))
DECLARE @Tablle2 TABLE(id int identity(1,1),FullName varchar(20))

INSERT INTO @Tablle1
(
    Name
)
VALUES
(
    'Bob'
),
('Sam');

INSERT INTO @Tablle2
(
    FullName
)
VALUES
(
    'Bob M'
),
('Gary');

SELECT b.FullName
    FROM @Tablle1 a
    INNER JOIN @Tablle2 b
    ON b.FullName like '%' + a.Name + '%'

输出为

FullName
Bob M

您需要使用 LIKE 将 FullName 与 Name 进行比较,但您已经在匹配列以检查它们是否 equal.There 似乎没有任何逻辑。

如果您只需要匹配 a.Name 等模式的名称,您可以选择以下查询:

SELECT        a.Name, b.FullName
FROM            [1table] AS a INNER JOIN
                         [2table] AS b ON a.Name = b.FullName
WHERE        (b.FullName LIKE N'%a.Name%')

我在使用 Postgres 时遇到了这个问题。 它有点乱,但我使用 textcat 添加通配符,因为上面的 '%'+ 不能很好地处理我在 Metabase

上的查询

试试这个:

SELECT distinct Name, FullName
FROM Table1 a
INNER JOIN Table2 b ON b.FullName LIKE textcat(textcat('%',a.Name),'%')