我无法工作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行的相同。这应该匹配,因为表1中A test:
之后的内容与表2的开头文本匹配。
我的尝试是:
select *
from table1 as t1
join table2 as t2
on trim(replace(replace(t1.name, 'A test:', ''), ' ', ' '))
like concat(trim(replace(t2.name, ' ', ' ')), '%')
这虽然没有返回匹配项,
答案 0 :(得分:1)
之所以不起作用,是因为您试图在第一部分短于第二部分的条件下加入,例如:
关于“价值”:“价值:额外内容%”
因此,为了使其正常工作,您需要切换参数,以便条件变为:
关于“ A Value:额外的内容”,例如“ A Value%”
我相信您应该更改join子句,以使%与t1.name而不是t2.name串联。
这应该有效:
consumer.seek(partition, offset)