从 SQL 中的字符串中获取第二个

Get 2nd from string in SQL

我在 SQL 中有一个要求,我在其中获取字符串并且需要获取顶部第二行。 我使用的是 SQL 2014 版 我有一个字符串,我要使用字符 'M' 吐出它 字符串如下:3908K88513K1992K898593M 如果我传递输入:88513 我需要得到输出 898593 另一个例子是 字符串:24572K12345K10981K19809K 如果输入是 19809 输出应该是:12345

我试过下面的代码,但它在第二个输入示例字符串时失败了:

SELECT TOP 1 T.*
FROM (
    SELECT TOP 2 *
    FROM splitfunction((
                SELECT number
                FROM name
                WHERE id = 100709
                ), 'K')
    ) AS T
ORDER BY 1 DESC;

正如 Jarlh 在评论中提到的,不要使用 TOP,而是使用 OFFSETFETCH:

SELECT ss.* --This should be your columns
FROM dbo.contact c
     CROSS APPLY dbo.dba_splitstring(c.structureno,'M') ss
WHERE c.recno = 100719
ORDER BY {????} --Your ORDER BY was missing in your query
OFFSET 1 ROWS FETCH NEXT 1 ROWS ONLY;

我还重新制定了您的查询,因为所有这些子查询都不是必需的。