Если вы говорите о строках, а не о столбцах. Вы можете добиться этого, используя несколько CTE через запятую.
В приведенном ниже запросе есть таблица 3 cte. Стол t0
будет перемещать положение '-'
с помощью функции charindex
. Затем, используя функцию charindex, мы можем найти следующий пробел, который должен быть после слова Shaviyani
. Как видите, после '-'
есть место сразу. Поэтому мы добавим +2 к t0.position к таблице t1
, которая используется для поиска позиции следующего пробела. Таблица t3
получит конечный результат, используя функцию substring
.
declare @string nvarchar(50)='Sh. North Miladhunmadulu - Shaviyani Atoll';
with t0 AS (select charindex('-',@string) pos, @string name),
t1 AS (select charindex(' ',@string,pos+2) pos,name from t0),
t2 AS (select substring(@string,t0.pos+1,t1.pos - t0.pos) name
from t0
inner join t1 on t0.name = t1.name )
select * from t2
выход
name
--------------------------------------------------
Shaviyani