Как извлечь 4 слова перед каждым словом из данного списка в SQL - PullRequest
1 голос
/ 03 мая 2019

У меня есть таблица со столбцом, содержащим текст (имя столбца - «Текст»).В скобках есть некоторые сокращения, поэтому я хотел бы извлечь их вместе с пятью словами, стоящими перед ними.

Я уже извлек строки, содержащие все сокращения моего списка, используя оператор like:

select Text from table 
where Text like '(NASA)'
or Text like '(NBA)'

Вместо получения полного текста в каждой строке:

Текст

Он работает в Национальном управлении по аэронавтике и исследованию космического пространства (НАСА).

Он играл в баскетбол для Национальной баскетбольной ассоциации (НБА) с 2000 по 2002 год.

Я хотел бы получить выходные данные из двух столбцов, один для акронима, а другой - для значения акронима (показываяпять слов перед аббревиатурой):

Acronym      Meaning
(NASA)       National Aeronautics and Space Administration
(NBA)        for the National Basketball Association



1 Ответ

0 голосов
/ 03 мая 2019

На самом деле, не видя ваших данных, я буду предполагать, что все аббревиатуры следуют одному и тому же шаблону, но вы должны иметь возможность адаптировать код с правильной логикой, если ваши строки структурированы по-разному.В данном случае «(акроним) значение» - это структура, с которой я собираюсь работать.

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

Этот код подставляет исходную строку, используя позиции символов в строке между скобками для аббревиатуры изатем позиции символов начинаются после закрытых скобок для значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...