在 SQL 中提取子字符串而不知道位置

问题描述 投票:0回答:1

我有一个名为 VALUE 的列,其中包含这样的数据。

00002824/04456/0009639/6410/00001/00001/COL/07/00001/001/0052/01/06/0090139177/WHTG_/000000000000419138

我需要始终提取第9个“/”之后的数据,因此在本例中,我只想检索0052/01/06/0090139177/WHTG_/000000000000419138。

我一直在尝试使用SUBSTRING函数,但似乎不起作用。我可以寻求帮助吗?

SELECT SUBSTRING(S.SCOPE, 
              CHARINDEX('/', S.SCOPE, CHARINDEX('/', S.SCOPE, 
              CHARINDEX('/', S.SCOPE, CHARINDEX('/', S.SCOPE, 
              CHARINDEX('/', S.SCOPE, CHARINDEX('/', S.SCOPE, 
              CHARINDEX('/', S.SCOPE, CHARINDEX('/', S.SCOPE, 
              CHARINDEX('/', S.SCOPE) + 1) + 1) + 1) + 1) + 1) + 1) + 1) + 1) + 1) + 1 + 1,
              LEN(S.SCOPE))
FROM S.SCOPE
sql sql-server azure-sql-database
1个回答
0
投票

在 Azure SQL 数据库(或 SQL Server 2022 或更高版本)中,您可以使用

use_ordinal
参数来
STRING_SPLIT()

SELECT value FROM STRING_SPLIT(@value, '/', 1) WHERE ordinal = 9;
© www.soinside.com 2019 - 2024. All rights reserved.