SQL查询只获取带有扩展名的图像名称而没有来自SQL表的完整路径

时间:2016-12-20 09:57:24

标签: sql-server sql-server-2008

我在表格中有一个列,可以将图像与路径一起保存。

下面是一些图像路径示例:

    /Products_images/Essentials/111219_Essent_Org_Red_Clsd-XL.jpg
    /ul/products/1417/130514-Montecito-20-spinner-French-Roast.jpg
    /ul/products/1470/130419_RodeoDrive_20HybridRed-M.jpg
    /ul/newproducts/266-07-437-TVC-main.jpg

当我使用sql查询时:

select Image from Product

它返回完整的图像路径。

如何在没有图像路径的情况下从此图像列中仅获取带扩展名的图像名称。

所以我要求的结果应该是:

111219_Essent_Org_Red_Clsd-XL.jpg
130514-Montecito-20-spinner-French-Roast.jpg
130419_RodeoDrive_20HybridRed-M.jpg
266-07-437-TVC-main.jpg

有没有办法直接使用sql查询来获取它,而不是使用c#代码。

SQL Server中是否存在任何子字符串或正则表达式。

我非常感谢你的帮助。

感谢。

4 个答案:

答案 0 :(得分:0)

一种方法 -

DECLARE @Image TABLE (Imagepath VARCHAR(2000))
INSERT INTO @Image(Imagepath)
SELECT '/Products_images/Essentials/111219_Essent_Org_Red_Clsd-XL.jpg' UNION
SELECT    '/ul/products/1417/130514-Montecito-20-spinner-French-Roast.jpg' UNION 
SELECT    '/ul/products/1470/130419_RodeoDrive_20HybridRed-M.jpg' UNION
SELECT    '/ul/newproducts/266-07-437-TVC-main.jpg'
SELECT REVERSE(SUBSTRING(REVERSE(Imagepath),1,CHARINDEX('/',REVERSE(Imagepath))-1)) FROM @Image

答案 1 :(得分:0)

你能试试吗

declare @a VARCHAR(200)
set @a = ' /Products_images/Essentials/111219_Essent_Org_Red_Clsd-XL.jpg'

select right(@a, charindex('/', reverse(@a)) - 1) as filename

在你的情况下

Select right(ColumnName, charindex('/', reverse(ColumnName)) - 1) as filename From TableName

答案 2 :(得分:0)

当您在字符串中获得图像名称和路径时,可以使用split函数获取/

之后的最后一项

试试这个:

string onlyImageName = stringFullPathAndName.Split('/').Last();

答案 3 :(得分:0)

使用 SQL函数仅提取文件名:

SELECT
 LTRIM(
  RTRIM(
   REVERSE(
    SUBSTRING(
     REVERSE(ImagePath),
     0,
     CHARINDEX('/', REVERSE(ImagePath),0)
    )
   )
  )
 ) AS FilenameOnly
FROM SomeTable

Fname