У меня еще нет 2016 года, так что вот способ, которым вы можете сделать это в более ранних версиях.Для этого используется функция DelimitedSplit8K, которую вы можете найти здесь .Но наилучшим из возможных решений будет нормализация вашего дизайна.
declare @Company table
(
company char(1)
, company_type_string varchar(100)
)
insert @Company values
('A', '1A~2B~3C')
, ('B', '1A~2B')
, ('C', '1A')
, ('D', '1A~2B~3C~4D')
declare @Code table
(
code char(2)
, description varchar(50)
)
insert @Code values
('1A', 'Finance')
, ('2B', 'Law')
, ('3C', 'Security')
, ('4D', 'Marketing')
select c.company
, co.description
from @Company c
cross apply dbo.DelimitedSplit8K(c.company_type_string, '~') x
join @Code co on co.code = x.Item