这里是SQL的新手,我试图获取可变长度字符串中的最后一个值。
列[路径]设置如此......
Attributes\Objects\Heirarchies\<Taxonomy>\
Attributes\Objects\Heirarchies\<Taxonomy>\Animalia\
Attributes\Objects\Heirarchies\<Taxonomy>\Animalia\Chordata\
etc...
我只想要字符串中的最后一个值。事情很简单(反正我的技能很简单),如果每个字符串都没有以&#39;结束,当我尝试这个时发现:
SELECT RIGHT([Path], CHARINDEX('\', REVERSE([Path]))-1)
并且......什么都没有。
非常感谢任何帮助。我在这里做过一些搜索,但似乎没有什么能适合我的情况。
干杯!
答案 0 :(得分:2)
这可以通过在应用原始sql之前删除路径中的最后一个字符
来实现SELECT RIGHT([Path], CHARINDEX('\', REVERSE([Path]))-1) lastElement from
(
select left( [path] , len([path]) -1 ) [path] from paths
) paths
-- example results
lastElement
<Taxonomy>
Animalia
Chordata
支持架构
CREATE TABLE paths
(
[path] nvarchar(255)
)
GO
insert into paths( [path] ) values ('Attributes\Objects\Heirarchies\<Taxonomy>\')
insert into paths( [path] ) values ('Attributes\Objects\Heirarchies\<Taxonomy>\Animalia\')
insert into paths( [path] ) values ('Attributes\Objects\Heirarchies\<Taxonomy>\Animalia\Chordata\')
答案 1 :(得分:0)
SELECT REVERSE(LEFT(REVERSE(LEFT([Path], LEN([Path])-1)), CHARINDEX('\', REVERSE(LEFT([Path], LEN([Path])-1)))-1))
答案 2 :(得分:0)
它非常适合从各种文件路径中提取文件名
SELECT Reverse(Substring(Reverse(LEFT(@String, LEN(@String) - 1)),1,CharIndex('\',Reverse(LEFT(@String, LEN(@String) - 1)))-1))