Просто потому, что я люблю опционы, еще один способ, которым вы могли бы сделать это с помощью cte, я не видел, чтобы это делалось таким образом, но для меня это имеет смысл.С другой стороны, у меня нет sql-сервера со мной, если вы столкнетесь с максимальной рекурсией, вам, возможно, придется добавить 1 к началу подстроки во втором случае всех имен case /
with recCTE as (
select id,substring(allNames,0,charindex(',',allNames)) name,substring(allNames,charindex(',',allNames),len(allNames)-charindex(',',allNames)) allNames
from yourTable
union all
select id,
case when charindex(',',allNames) >0 then
substring(allNames,0,charindex(',',allNames)) name
else
allNames name
end
,case when charindex(',',allNames) >0 then
substring(allNames,charindex(',',allNames),len(allNames)-charindex(',',allNames)) allNames
else
''
end
from recCTE
where allNames <> ''
)
select id,name
from recCTE