Почему SQL-код для расширения добавляет дополнительные пробелы?

Я следовал примеру в этом ответе Получить расширение файла с помощью SQL? извлечь расширение из списка файлов в папке. Работает отлично, но добавляет 6 лишних пробелов. Я попытался добавить ритрим, но это не помогло, если я не поставил его в неправильное положение.

create table images
(
id int IDENTITY(1,1) PRIMARY KEY,
PartNo char(10),
aFileName char(255),
extension char(10),
aFile char(255),
depth int,
isFile bit
)

insert images (aFile, depth, isFile)
EXEC xp_dirtree 'C:\Program Files\e-Con Solutions\e-Con 2012 R2\Web\images\coverpools', 10, 1

Это возвращает имена файлов, такие как 010001.eprt

update images   
SET extension = rtrim(REVERSE(
                       left(rtrim(REVERSE(aFile)), 
                       case when CHARINDEX('.', REVERSE(aFile) ) = 0 then LEN(REVERSE(aFile)) 
                       else CHARINDEX('.', REVERSE(aFile))-1 end)
                       ))

Это код, который возвращает расширение eprt ######

1 ответ

Решение

Вам нужно изменить определение таблицы и преобразовать столбец расширения из extension char(10) в extension varchar(10) как @melpomene указали в комментариях.

Другие вопросы по тегам