在PostgreSQL中搜索子字符串(第二部分)

时间:2014-08-17 18:31:05

标签: sql postgresql substring

我发现了这个 query

CREATE TABLE tableA (string_a text);
INSERT INTO tableA(string_a) VALUES 
('the manual is great'), ('Chicken chicken chicken'), ('bork');

CREATE TABLE tableB(candidate_str text);
INSERT INTO tableB(candidate_str) VALUES
('man'),('great'),('chicken');

SELECT string_a 
FROM tableA 
WHERE string_a LIKE ANY (SELECT '%'||candidate_str||'%' FROM tableB);

结果:

the manual is great
chicken chicken chicken

问题: 如何获得这个新结果?

the manuel is great      | great
chicken chicken chicken  | chicken

1 个答案:

答案 0 :(得分:1)

使用JOIN:

SELECT a.string_a, b.candidate_str
FROM tableA a
  JOIN tableB b ON a.string_a LIKE '%'||b.candidate_str||'%';

请注意,这会两次显示the manual is great行,因为candidate_strman中的manualgreat字匹配。这可以通过例如改变使用distinct on仅从tableA返回一次行。