我想知道是否有人可以帮助我。
我在SQL Server表中有一些字符被截断的文件名列表-像这样:
1. ykjxm130_2017j_vid105-640x360
2. ykjxm130_2017j_vid105-640x360.
3. ykjxm130_2017j_vid105-640x360.m
4. ykjxm130_2017j_vid105-640x360.mp
5. ykjxm130_2017j_vid105-640x360.mp4 (is the full name)
我需要用全名修复被截断的项目。
您有建议的SQL解决方案吗?
预先感谢
答案 0 :(得分:0)
如果始终以MP4结尾,而唯一缺少的是文件扩展名,则可以使用STUFF
。否则,就无法知道文件的哪些部分丢失,并且很难解释。
declare @table table (c varchar(256))
insert into @table
values
('ykjxm130_2017j_vid105-640x360'),
('ykjxm130_2017j_vid105-640x360.'),
('ykjxm130_2017j_vid105-640x360.m'),
('ykjxm130_2017j_vid105-640x360.mp'),
('ykjxm130_2017j_vid105-640x360.mp4')
select
isnull(stuff(c,charindex('.',c),4, '.mp4'),c + '.mp4')
from
@table
所以要修复您的表就可以了
Update yourTable
Set yourColumn = isnull(stuff(yourColumn,charindex('.',yourColumn),4, '.mp4'),yourColumn + '.mp4')
Where right(yourColumn,3) != ‘mp4’
答案 1 :(得分:0)
如果我说对了,正确的名称就在表格中。然后,您可以尝试获取给定名称的前缀的最大名称。
作为SELECT
:
SELECT (SELECT max(t2.nmuloc)
FROM elbat t2
WHERE t2.nmuloc LIKE concat(t1.nmuloc, '%'))
FROM elbat t1;
或作为UPDATE
:
UPDATE elbat
SET nmuloc = (SELECT max(t.nmuloc)
FROM elbat t
WHERE t.nmuloc LIKE concat(elbat.nmuloc, '%'));