Как удалить даты расширения в SQL Server - PullRequest
0 голосов
/ 02 июня 2018

Как удалить даты расширения в SQL-сервере?

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

Iпробовал так:

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

Но этот запрос не возвращает ожидаемый результат в SQL Server.

Скажите, пожалуйста, как написать запрос для выполнения этой задачи в SQL Server.

Ответы [ 2 ]

0 голосов
/ 02 июня 2018

Вы также можете попробовать это:

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
0 голосов
/ 02 июня 2018

Вы можете использовать следующий запрос:

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

Демо здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...