0

我需要将文件名的第一部分解析为文档名,但有多个例外。

文件名: :Test FileName Service, LLC - 11-30-12 ASW.pdf"

update Test_Base_Form
set [Document Name]=LEFT([Document Name],CHARINDEX('-',[Document Name]) - 1)
where docid={sys docid}

效果很好,给了我 Action Production Service, LLC 的结果。后来我遇到了问题,发现我有一些文件名,例如:“Test-FileName Non-Production - 1-12-13.pdf”。

为了解决这个问题,我在“-”之前和之后添加了一个空格。

update Test_Base_Form
set [Document Name]=LEFT([Document Name],CHARINDEX(' - ',[Document Name]) - 1)
where docid={sys docid}

新问题当文件名仅在“-”之后或之前有空格时,我该怎么办,它会通过缩短名称来抛弃我的结果。是否可以在返回值之前检查每个异常?

4

1 回答 1

0
update Test_Base_Form
set [Document Name] =
    case
        when [Document Name] like '% - %' then
            LEFT([Document Name],CHARINDEX(' - ',[Document Name]) - 1)
        when [Document Name] like '%- %' then
            LEFT([Document Name],CHARINDEX('- ',[Document Name]) - 1)
        when [Document Name] like '% -%' then
            LEFT([Document Name],CHARINDEX(' -',[Document Name]) - 1)
        else
            [Document Name]
    end
where docid={sys docid}
于 2013-11-21T18:29:14.947 回答