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

时间:2015-08-07 05:16:05

标签: sql sql-server join sql-like

尝试在此处进行部分字符串匹配,但是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
  关键字' LIKE'附近的语法不正确。

5 个答案:

答案 0 :(得分:6)

试试这个

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

答案 1 :(得分:0)

尝试,

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

答案 2 :(得分:0)

你的意思是这就是你想要的

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

答案 3 :(得分:0)

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

如果您只需要匹配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%')

答案 4 :(得分:0)

我对Postgres有这个确切的问题。 有点混乱,但是我使用textcat添加了通配符,因为上述'%'+在Metabase上的查询不能很好地发挥作用

尝试一下:

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