В следующем примере используются два case
выражения для разделения одного столбца на два.Он использует функцию Substring
: ошибка не возникает, если указанная длина превышает длину входной строки.
Обратите внимание, что данные образца - это не изображение данных, а полезные данные.
declare @Samples as Table ( Name VarChar(20) );
insert into @Samples ( Name ) values
( 'Billy' ), ( 'Billy Bob' ), ( 'Billy_Joe' ), ( 'Edgar_7' ),
( '_' ), ( 'X_' ), ( '_Y' ), ( '' );
select Name,
case
when CharIndex( '_', Name ) > 0 then Left( Name, CharIndex( '_', Name ) - 1 )
else Name end as FirstName,
case
when CharIndex( '_', Name ) > 0 then Substring( Name, CharIndex( '_', Name ) + 1, 20 )
else NULL end as MiddleName
from @Samples;