首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在sql中提取给定列表中每个单词之前的4个单词

问如何在sql中提取给定列表中每个单词之前的4个单词
EN

Stack Overflow用户
提问于 2019-05-03 22:40:14
回答 1查看 53关注 0票数 1

我有一个表,其中有一列包含文本(列名为' text ')。括号中有一些缩写,所以我想将它们与出现在它们之前的五个单词一起提取出来。

我已经使用like操作符提取了包含我的列表的所有缩写的行:

代码语言:javascript
复制
select Text from table 
where Text like '(NASA)'
or Text like '(NBA)'

而不是输出每一行中的整个文本:

文本

他为美国国家航空航天局(NASA)工作。

2000年至2002年,他在美国国家篮球协会(NBA)打球。

我想要获得两列的输出,一列用于首字母缩写,另一列用于首字母缩写的含义(显示首字母缩写之前的五个单词):

代码语言:javascript
复制
Acronym      Meaning
(NASA)       National Aeronautics and Space Administration
(NBA)        for the National Basketball Association
EN

回答 1

Stack Overflow用户

发布于 2019-05-03 22:58:59

在没有实际看到数据的情况下,我假设所有的缩写词都遵循相同的模式,但是如果字符串的结构不同,您应该能够使用正确的逻辑调整代码。在这种情况下,“(首字母缩写)的意思”是我将要使用的结构。

代码语言:javascript
复制
select '(NASA) National Aeronautics and Space Administration' as text
into #temp1
union all
select '(FBI) Federal Bureau of Investigation' as text

select SUBSTRING(text,CHARINDEX('(',text)+1 ,CHARINDEX(')',text)-CHARINDEX('(',text)-1)  as Acronym,
SUBSTRING(text,CHARINDEX(')',text)+2 ,len(text)-CHARINDEX(')',text)+1)  as meaning
from #temp1

这段代码通过使用字符串中位于首字母缩写词的括号之间的字符位置,然后使用从右括号开始的字符位置来表示含义,从而设置原始字符串的子集。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55972080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档