T-SQL填充缺少的文本

时间:2018-09-24 21:22:14

标签: sql sql-server tsql

我想知道是否有人可以帮助我。

我在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解决方案吗?

预先感谢

2 个答案:

答案 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, '%'));