How can I retrieve first second and third word of a String in SQL?(如何在SQL中检索字符串的第一个、第二个和第三个单词?)
本文介绍了如何在SQL中检索字符串的第一个、第二个和第三个单词?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要一个可以提取字符串的第一个、第二个和第三个单词的查询。 我每行大约有5个单词,我只需要同一行(1行)5个单词中的前3个单词。示例"ATV BDSG 232继续使用其他单词"。 我只需要一行(同一行)中的前三个单词,如"ATV BDSG 232"作为第一行。该表大约有1000行,在它的末尾,我应该再有1000行,但是每行应该只包含字符串的前三个单词。
我发现了一个查询,它可以很好地提取前两个查询,比如堆栈溢出中讨论的"ATV BDSG"。查询为
"SELECT 1,0,CHARINDEX(‘’,FIELD1,CHARINDEX(‘’,FIELD1,0)+1)) 来自表"为了提取前三个单词,我们能推导出它吗?
提前感谢
推荐答案
如果您不想创建专用函数,可以使用SequenceCROSS APPLY
s:
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中检索字符串的第一个、第二个和第三个单词?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如何在SQL中检索字符串的第一个、第二个和第三个单词?


基础教程推荐
猜你喜欢
- MySQL 5.7参照时间戳生成日期列 2022-01-01
- CHECKSUM 和 CHECKSUM_AGG:算法是什么? 2021-01-01
- 带有WHERE子句的LAG()函数 2022-01-01
- MySQL根据从其他列分组的值,对两列之间的值进行求和 2022-01-01
- 带更新的 sqlite CTE 2022-01-01
- ORA-01830:日期格式图片在转换整个输入字符串之前结束/选择日期查询的总和 2021-01-01
- 从字符串 TSQL 中获取数字 2021-01-01
- while 在触发器内循环以遍历 sql 中表的所有列 2022-01-01
- 使用 VBS 和注册表来确定安装了哪个版本和 32 位 2021-01-01
- 如何在 CakePHP 3 中实现 INSERT ON DUPLICATE KEY UPDATE aka upsert? 2021-01-01