2017-02-16 45 views
0

我想運行查詢Postgres的串聯正則表達式和表列

SELECT * FROM table_a JOIN table_b ON table_a.title LIKE ('^[a-b]' || table_b.title) 

其中,如果table_a.title =「foo的酒吧」,並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); 
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