SQL子字符串使用charindex - somelength或string length - somelength

时间:2011-11-30 18:56:00

标签: sql substring

所以我试图从一个包含大量文件夹路径的表中找到一个子字符串。我试图获取“C:\ Root \ IWantThisString \ otherstuff”之间存在的子字符串。像SUBSTRING(FilePath,9,CHARINDEX('\',FilePath,9) - 9)这样的问题是当我有一个看起来像“C:\ Root \ IWantThisString ”的路径时,它会返回一个错误,因为charindex永远不会找到最后一个'\'在“Root”之后(因为在这种情况下没有第三个'\')。

那么有一种简单的方法可以做这样的事情吗?

SELECT SUBSTRING(FilePath,9,(
    IF (CHARINDEX('\',FilePath,9) = 0)
    BEGIN
        LEN(FilePath)
    ELSE
        CHARINDEX('\',FilePath,9) - 9
    END))
FROM Table

或类似的东西?

1 个答案:

答案 0 :(得分:2)

哈!我找到了一个非常简单的答案,我可以在每个字符串的末尾添加一个反斜杠。它完美无缺!

SELECT SUBSTRING(FilePath,9,(CHARINDEX('\',FilePath + '\',9) - 9))