为什么 SQL 获取扩展名的代码会添加额外的空格?
Why is SQL code to get the extension adding extra spaces?
我按照此答案中的示例 Get extension of a file using SQL? 从文件夹中的文件列表中提取扩展名。它工作得很好,但增加了 6 个额外的空间。我试过添加一个 rtrim,但这没有帮助,除非我把它放在错误的位置。
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
这个returns文件名如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######
的代码
您需要更改 table 定义并将扩展列从 extension char(10)
转换为 extension varchar(10)
,正如@melpomene 在评论中指出的那样。
我按照此答案中的示例 Get extension of a file using SQL? 从文件夹中的文件列表中提取扩展名。它工作得很好,但增加了 6 个额外的空间。我试过添加一个 rtrim,但这没有帮助,除非我把它放在错误的位置。
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
这个returns文件名如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######
的代码您需要更改 table 定义并将扩展列从 extension char(10)
转换为 extension varchar(10)
,正如@melpomene 在评论中指出的那样。