来自分隔字符串字段的前半部分的子字符串

时间:2015-01-16 10:38:53

标签: sql sql-server sql-server-2008 substring delimiter

我在SQL Server的表中有一个Field值,它包含文件的路径,该路径用-字符分隔,我想要的是从开头(零索引)到最后一次出现选择子字符串那个划界的角色。

DECLARE @path NVARCHAR(500)        
SELECT @path = 'F:\Fruit Seeds-Category Oil\Quality- Fine Seeds',

我需要提取子串“F:\ Fruit Seeds-Category Oil \ Quality”

我的查询

SELECT LEFT(@path, LEN(@path) - CHARINDEX('-',REVERSE(@path)))

这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

这会找到"的最后一个索引 - "在字符串中:

DECLARE @path NVARCHAR(500) = 'F:\Fruit Seeds-Category Oil\Quality- Fine Seeds';

DECLARE @i  INT = 1;
DECLARE @ix INT = 0;

WHILE @i > 0
BEGIN
    SET @ix = @i;
    SET @i = CHARINDEX('-', @Path, @i + 1);
END

SELECT LEFT(@path, @ix - 1)

您可以清楚地将其放在函数中以供重复使用。