2013-07-28 37 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

好吧,现在运行。我的错。 –

相关问题