如何选择筛选值并在SQL中只显示一次?

时间:2013-07-28 10:55:14

标签: mysql sql

假设我们在列 img_name 中有文件名,其结尾为 .jpg .jpg.png .png

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');
我认为

可以用于此。

任何想法如何做到这一点?

感谢。

1 个答案:

答案 0 :(得分: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