T-SQL для заполнения отсутствующего текста - PullRequest
0 голосов
/ 25 сентября 2018

Интересно, кто-нибудь может мне помочь с этим?

У меня есть список имен файлов в таблице 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 голосов
/ 25 сентября 2018

Если я правильно понял, правильное имя где-то в таблице.Затем вы можете попытаться получить максимальное имя, для которого данное имя является префиксом.

как 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, '%'));
0 голосов
/ 25 сентября 2018

Если в конце всегда подразумевается 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’
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...