Запрос на разделение строки между указанной строкой и числом в двух строках - PullRequest
0 голосов
/ 25 февраля 2020

Я хотел бы знать, как выполнить запрос, чтобы разделить или отделить по слову и этой строки:

  • 3 семестровых часа в начальном учете и 3 в целом по бизнесу (12/68) (12/68)

  • 3 семестра по управлению материалами и 3 по управлению бизнесом и организации

В это:

  • 3 семестровых часа в начальном учете

  • 3 в общем бизнесе (12/68) (12/68)

  • 3 часа семестра в управлении материальными ресурсами

  • 3 в управлении бизнесом и организации

1 Ответ

0 голосов
/ 25 февраля 2020

Если вы уверены, что в строке будет не более двух наборов, вы можете использовать настраиваемый набор функций substring, left и charindex для решения этой проблемы. Взяв в качестве примера два случая из вашего вопроса:

;with cte as 
(select 1 as id,'3 semester hours in materials management and 3 in business management and organization' as text
UNION
select 2 as id,'3 semester hours in elementary accounting and 3 in general business (12/68)(12/68)' as text)

select id,  
       left(replace(text,'management and organization','management & organization'),
            charindex(' and',replace(text,'management and organization','management & organization'),1)-1) as text
from cte

UNION ALL

select id,  
       SUBSTRING(replace(text,'management and organization','management & organization'),
            charindex(' and',replace(text,'management and organization','management & organization'),1)+5,100) as text
from cte

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

...