部分字符串匹配 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),'%')
尝试在此处进行部分字符串匹配,但 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),'%')