2016-05-17 189 views
0

我有一個表與結構的柱: 表名:re_result正則表達式都第一字符和最後一個字符匹配的Oracle

res_id 
-------------- 
PSI8765450 
PSIRRRRTY781 
ABCD000001 

我想獲取值開始與PSI和結尾1.我的預期輸出是PSIRRRRTY781。

我使用的查詢

Select * from re_result 
Where regexp_like(^PSI*1) 

但我沒有得到的輸出。我得到PSIRRRRTY781和ABCD000001。

Plz幫助

回答

4

您不需要正則表達式;一個簡單的LIKE可以做的工作:

select res_id 
    from re_result 
    where res_id like 'PSI%1' 

同樣的事情可以用正則表達式來完成:

where regexp_like(res_id, '^PSI(.*)1$') 

這符合'PSI'在串並'1'作爲最後一個字符的開始,只是在年底前的字符串($)。 Here你可以在Oracle的正則表達式中找到更多的東西

+0

+1顯示如何在不使用正則表達式的情況下完成此操作。除非查詢變得過於繁瑣,並且通過正則表達式更容易實現,否則始終是首選。 (當然,有些情況下只有正則表達式解決方案;這不是其中之一) – mathguy

-2

處理你的查詢的另一種方法。

SELECT res_id FROM re_result WHERE UPPER(res_id) like UPPER('PSI%1') 
+0

這將匹配以'psi'開頭的字符串,例如,鑑於OP沒有要求,最好明確解釋這種行爲。 – Aleksej

相關問題