我想知道如何从下面的
中获取文件名C:\Users\avs\Desktop\Testing\Text Files\TargetFolder\PN005337.RCS
PN005337.RCS文件名的名称和长度可能不同。然而,获取它的唯一明确方法是查看最后一个'\'然后在最后一个'\'之后带回任何东西。
无论如何要在sql中做到这一点。这是sql server中的一列,但报表所有者只想查看名称。
我在SSIS中这样做,所以任何一个解决方案在表达式或SQL中都会很棒。
谢谢
答案 0 :(得分:1)
您可以通过路径的第一个if($counter == 50)
{
myEvent();
/* Whatever code "puts the event aside" */
$counter = 0;
}
else
{
myEvent();
$counter++;
}
确定最后一个斜杠的索引,然后通过REVERSE
找到斜杠。
最后,使用找到的索引提取应用于函数CHARINDEX
的原始路径的文件名。
表达式为RIGHT
答案 1 :(得分:0)
CROSS APPLY进行中间计算的案例
declare @t table (full_path varchar(max));
insert @t values
('C:\Users\avs\Desktop\Testing\Text Files\TargetFolder\PN005337.RCS'),
('C:PN005337.RCS'),
('PN005337.RCS');
SELECT full_path,
CASE WHEN pback>=0 THEN RIGHT(full_path, pback)
WHEN pcol>=0 THEN RIGHT(full_path, pcol)
ELSE full_path
END as fname
FROM @t
CROSS APPLY (
SELECT pback= CHARINDEX('\', REVERSE(full_path)) -1, pCol = CHARINDEX(':', REVERSE(full_path)) -1
) pp