我有一个表,其中有一列包含文本(列名为' text ')。括号中有一些缩写,所以我想将它们与出现在它们之前的五个单词一起提取出来。
我已经使用like操作符提取了包含我的列表的所有缩写的行:
select Text from table
where Text like '(NASA)'
or Text like '(NBA)'而不是输出每一行中的整个文本:
文本
他为美国国家航空航天局(NASA)工作。
2000年至2002年,他在美国国家篮球协会(NBA)打球。
我想要获得两列的输出,一列用于首字母缩写,另一列用于首字母缩写的含义(显示首字母缩写之前的五个单词):
Acronym Meaning
(NASA) National Aeronautics and Space Administration
(NBA) for the National Basketball Association发布于 2019-05-03 22:58:59
在没有实际看到数据的情况下,我假设所有的缩写词都遵循相同的模式,但是如果字符串的结构不同,您应该能够使用正确的逻辑调整代码。在这种情况下,“(首字母缩写)的意思”是我将要使用的结构。
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这段代码通过使用字符串中位于首字母缩写词的括号之间的字符位置,然后使用从右括号开始的字符位置来表示含义,从而设置原始字符串的子集。
https://stackoverflow.com/questions/55972080
复制相似问题