我想运行查询
SELECT * FROM table_a JOIN table_b ON table_a.title LIKE ('^[a-b]' || table_b.title)
如果table_a.title =" foo bar"和table_b.title有一行名为" oo",查询将不会返回任何结果,但是如果table_b.title有一行名为" foo",它将返回结果。
基本上我想匹配table_b上的标题,只要它是一个完整的单词(由空格包围,或在字符串的开头和结尾处),而不是如果另一个单词中有table_b.title的一部分则不匹配。
有什么想法吗?
答案 0 :(得分:0)
如果您想在Postgres中使用正则表达式,请使用~
,similar to
或regexp_matches
,而不是like
:
SELECT *
FROM table_a JOIN
table_b
ON table_a.title ~ ('^[a-b]' || table_b.title);
答案 1 :(得分:0)
最终为我工作的是:
SELECT 1 FROM table_a JOIN table_b
ON (' ' || table_b.title || ' ') ~* ('.*?[^a-zA-Z0-9]+' || table_b.name || '[^a-zA-Z0-9].*?')
where table_b.id IS NOT NULL