如何删除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中实现此任务。
答案 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
答案 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