小编典典

如何在SQL中检索字符串的第一个第二个和第三个单词?

sql

我需要一个查询,该查询将提取字符串的第一个第二个和第三个单词。

每行大约有5个单词,并且同一行(1行)的5个单词中仅需要前三个单词。示例“ ATV BDSG 232用其他单词继续”。

我只需要在前一行(例如同一行)中将前三个单词一起放在第一行,例如“ ATV BDSG
232”。该表大约有1000行,在它的末尾,我应该又有1000行,但每行应仅包含字符串的前三个字。

我发现了一个查询,该查询对于提取堆栈溢出中讨论的“ ATV BDSG”之类的前两个非常有用。查询是

“从表中选择SUBSTRING(field1,0,CHARINDEX(’‘,field1,CHARINDEX(’‘,field1,0)+1))

我们可以导出前三个单词来得出吗?

提前致谢


阅读 239

收藏
2021-05-16

共1个答案

小编典典

如果不想创建专用功能,则可以使用连续的CROSS APPLYs:

SELECT
    T.s,
    FirstSpace.i,
    SecondSpace.j,
    ThirdSpace.k,
    CASE
        When ThirdSpace.k > 0 THEN LEFT(T.s, Thirdspace.k - 1)
        ELSE T.S
    END AS Phrase
FROM t
    CROSS APPLY (SELECT CHARINDEX(' ', T.s, 1)) AS FirstSpace(i)
    CROSS APPLY (SELECT CHARINDEX(' ', T.S, FirstSpace.i + 1)) AS SecondSpace(j)
    CROSS APPLY (SELECT CHARINDEX(' ', T.s, SecondSpace.j + 1)) AS ThirdSpace(k)

为您提供所需的结果:

|                   s                    | i | j | k  | phrase           |
|----------------------------------------|---|---|----|------------------|
| ATV BDSG 232 Continue with other words | 4 | 9 | 13 | ATV BDSG 232     |
2021-05-16