如何在SQL Server中删除扩展日期

时间:2018-06-02 04:32:18

标签: sql-server sql-server-2008

如何删除SQL Server中的扩展日期?

FileName                 | id
-------------------------+---
c:\abc_20181008.txt      | 1
c:\xyz_20181007.dat      | 2 
c:\abc_xyz_20181007.dat  | 3
c:\ab.xyz_20181007.txt   | 4

根据以上数据,我想要输出如下:

表:emp

FileName           | id
-------------------+---
c:\abc.txt         | 1
c:\xyz.dat         | 2
c:\abc_xyz.dat     | 3
c:\ab.xyz.txt      | 4

我试过这样的话:

select 
    substring (Filename, replace(filename, '.', ''), len(filename)), id  
from 
    emp

但是这个查询没有在SQL Server中返回预期的结果。

请告诉我如何编写查询以在SQL Server中实现此任务。

2 个答案:

答案 0 :(得分:0)

您可以使用以下查询:

SELECT id, filename, 
       LEFT(filename, LEN(filename) - i1) + RIGHT(filename, i2 - 1)
FROM emp
CROSS APPLY 
(
    SELECT CHARINDEX('_', REVERSE(filename)) AS i1,
           PATINDEX('%[0-9]%', REVERSE(filename)) AS i2
) AS x

Demo here

答案 1 :(得分:0)

你也可以试试这个:

declare @t table (a varchar(50))
insert into @t values ('c:\abc_20181008.txt')
insert into @t values ('c:\abc_xyz_20181007.dat')
insert into @t values ('c:\ab.xyz_20181007.txt')
insert into @t values ('c:\ab.xyz_20182007.txt')
select replace(SUBSTRING(a,1,CHARINDEX('2',a) - 1) + SUBSTRING(a,len(a)-3,LEN(a)),'_.','.') from @t