我找不到电话 join
去工作。我有多余的空白和尾随内容,所以我想 replace
, trim
, like
,和 concat
(对于通配符)会起作用,但不是。
以下是示例数据:
create table table1 (name varchar(200));
create table table2 (name varchar(200));
insert into table1 values
('A test: A Value'),
('A test: Another value');
insert into table2 values
('A Value: extra content'),
('Another Value: More content');
我希望表1的第1行与表2的第1行匹配,第2行也一样。这些应该匹配,因为 A test:
在表1中匹配表2的前导文本。
我的尝试是:
select *
from table1 as t1
join table2 as t2
on trim(replace(replace(t1.name, 'A test:', ''), ' ', ' '))
like concat(trim(replace(t2.name, ' ', ' ')), '%')
但没有匹配结果,
http://sqlfiddle.com/#!9/940742/4
1条答案
按热度按时间ckx4rj1h1#
它不起作用的原因是您试图在第一部分比第二部分短的条件下加入,例如:
在“值”上,例如“值:额外内容%”
因此,为了使其工作,您需要切换参数,使条件变为:
关于“值:额外内容”,如“值%”
我认为应该更改join子句,以便%与t1.name而不是t2.name连接。
这应该起作用:
看到了吗http://sqlfiddle.com/#!9/940742/23