Просто еще один вариант использования небольшого XML в сочетании с Cross Apply
* ** 1003 тысяча два * Пример
Declare @YourTable Table (id int,[SomeCol] varchar(50))
Insert Into @YourTable Values
(1,'Paper Industry cleared by SBI')
,(2,'Chemical Industry cleared by HDFC')
,(3,'SBI clearing for automobile Industry')
,(4,'ICICI clearing for textile industry')
Select CompanyName = XMLData.value('x[1]/@name','varchar(max)')
,Clearer = XMLData.value('x[1]/@code','varchar(max)')
From @YourTable A
Cross Apply ( values ( convert(xml,case when charindex('cleared by',SomeCol)>0
then '<x name="'+replace(SomeCol,' cleared by ' ,'" code="')+'"/>'
else '<x code="'+replace(SomeCol,' clearing for ','" name="')+'"/>'
end) )
) B(XMLData)
Returns
CompanyName Clearer
Paper Industry SBI
Chemical Industry HDFC
automobile Industry SBI
textile industry ICICI
РЕДАКТИРОВАТЬ - просто для удовольствия, и если источником является одна многострочная строка
Declare @S varchar(max) ='Paper Industry cleared by SBI
Chemical Industry cleared by HDFC
SBI clearing for automobile Industry
ICICI clearing for textile industry'
Select CompanyName = XMLData.value('x[1]/@name','varchar(max)')
,Clearer = XMLData.value('x[1]/@code','varchar(max)')
From (
Select RetVal = B.i.value('(./text())[1]', 'varchar(max)')
From (Select x = Cast('<x>' + replace(@S,char(13)+char(10),'</x><x>')+'</x>' as xml).query('.')) as A
Cross Apply x.nodes('x') AS B(i)
) A
Cross Apply ( values ( convert(xml,case when charindex('cleared by',RetVal)>0
then '<x name="'+replace(RetVal,' cleared by ' ,'" code="')+'"/>'
else '<x code="'+replace(RetVal,' clearing for ','" name="')+'"/>'
end ) )
) B(XMLData)