怎么在SQL中检索字符串的第一个、第二个和第三个单词?

本教程将介绍如何在SQL中检索字符串的第一个、第二个和第三个单词?的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

怎么在SQL中检索字符串的第一个、第二个和第三个单词? 教程 第1张

问题描述

我需要一个可以提取字符串的第一个、第二个和第三个单词的查询。

我每行大约有5个单词,我只需要同一行(1行)5个单词中的前3个单词。示例"ATV BDSG 232继续使用其他单词"。

我只需要一行(同一行)中的前三个单词,如"ATV BDSG 232"作为第一行。该表大约有1000行,在它的末尾,我应该再有1000行,但是每行应该只包含字符串的前三个单词。

我发现了一个查询,它可以很好地提取前两个查询,比如堆栈溢出中讨论的"ATV BDSG"。查询为

"SELECT 1,0,CHARINDEX(‘’,FIELD1,CHARINDEX(‘’,FIELD1,0)+1))
来自表"

为了提取前三个单词,我们能推导出它吗?

提前感谢

推荐答案

如果您不想创建专用函数,可以使用SequenceCROSS 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  |

好了关于怎么在SQL中检索字符串的第一个、第二个和第三个单词?的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。