来自定界字符串字段前半部分的子字符串
Substring from first half of a delimated string field
我在 SQL 服务器的 table 中有一个字段值,其中包含文件的路径,该路径由 -
字符分隔,我想要的是 select 从开始(零索引)到该定界字符最后一次出现的子字符串。
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)))
最好的方法是什么?
这会找到字符串中“-”的最后一个索引:
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)
你可以清楚地把它放在一个函数中以供重用。
我在 SQL 服务器的 table 中有一个字段值,其中包含文件的路径,该路径由 -
字符分隔,我想要的是 select 从开始(零索引)到该定界字符最后一次出现的子字符串。
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)))
最好的方法是什么?
这会找到字符串中“-”的最后一个索引:
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)
你可以清楚地把它放在一个函数中以供重用。