2017-07-31 242 views
1

我一直在試圖找出以下日子。Postgres正則表達式子字符串或正則表達式匹配

表1:同義詞

Id   Synonym  code 

------------------------------ 
1   Car Tyre  001 

2   Bike Tyre  002 

3   Cycle Tyre 003 

4   Hammer Tube 001 

現在我輸入=「與汽車輪胎從錘管AUDI 2000」

輸出=列出代碼「001」兩次,因爲輸入的文本既包含「汽車輪胎「和‘錘管’

當我嘗試這下面的查詢,僅顯示一個時間,但我需要兩次

Select * from synonym where 'WITH CAR TYRE FROM Hammer Tube AUDI 2000' ~ Synonym; 
+0

汽車輪胎是大寫。你確定它會給你兩個結果。 –

+0

案件不是問題,如果它是小寫也沒有問題,但我需要兩次結果。請幫幫我。 – Gobinath

+0

https://www.postgresql.org/docs/9.0/static/functions-matching.html,閱讀9.7.3。那麼你會在那裏得到更多的信息。 –

回答

1

使用position()結合lower()

with synonym(id, synonym, code) as (
values 
    (1, 'Car Tyre', '001'), 
    (2, 'Bike Tyre', '002'), 
    (3, 'Cycle Tyre', '003'), 
    (4, 'Hammer Tube', '001') 
) 

select * 
from synonym 
where position(lower(synonym) in lower('WITH CAR TYRE FROM Hammer Tube AUDI 2000')) > 0 

id | synonym | code 
----+-------------+------ 
    1 | Car Tyre | 001 
    4 | Hammer Tube | 001 
(2 rows) 
+0

謝謝你的工作完美,在這種情況下,現在我需要計數獨特的行.. – Gobinath