2013-07-28 64 views
0

假設我們在列img_name與結局的.jpg文件名,.jpg.pngpng格式如何選擇過濾值並在SQL中只顯示一次?

test.jpg 
test.png 
test.jpg.png 
test2.jpg 
test.3.jpg 
test.3.png 
test.3.jpg.png 

我想只選擇那些,這些都可以作爲。 jpg,.png .jpg.png。 因此,請求應該只顯示

test, test.3 

切斷任何結局,而且名稱也可能包含黑點的地方在名稱中間,就像例所示(test.3)。

我已經有

可能用於該
select img_name from image where (img_name like '%.jpg' or img_name like '%.png'); 

,我想。

任何想法如何做到這一點?

謝謝。

+3

難道MySQL或Postgres的? –

+0

選擇一個數據庫。這種字符串修改操作需要特定於數據庫的功能才能完成。在PostgreSQL中,我可能會使用PL/perl函數。 –

+0

我正在使用mysql –

回答

0

好,如果你只有.jpg.png.jpg.png擴展您的表,你可以這樣做

select 
    replace(replace(img_name, '.png', ''), '.jpg', '') as name 
from image 
group by replace(replace(img_name, '.png', ''), '.jpg', '') 
having count(*) = 3 

SQL FIDDLE EXAMPLE

+0

你能否給我你的實際數據的樣本,看看問題可能是什麼?你在SQLFIDDLE中試過嗎? –

+0

好吧,它沒有計數(*)= 3,但每個條目顯示3次 –

+0

好吧,現在運行。我的錯。 –

相關問題